client

package
v0.7.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 16, 2018 License: Apache-2.0 Imports: 17 Imported by: 0

Documentation

Index

Constants

View Source
const (
	WriteTimeout = 10 * time.Second
	// 心跳周期
	ReadTimeout = 31 * time.Second

	// 心跳间隔
	HeartbeatInterval = 9 * time.Second

	ReadTimeoutShort  = 20 * time.Second  // For requests that read/write several key-values.
	ReadTimeoutMedium = 60 * time.Second  // For requests that may need scan region.
	ReadTimeoutLong   = 150 * time.Second // For requests that may need scan region multiple times.
)
View Source
const (
	DefaultIdleTimeout = 3600 * time.Second
	// 128 KB
	DefaultInitialWindowSize int32 = 1024 * 64
	DefaultPoolSize          int   = 1

	// 40 KB
	DefaultWriteSize = 40960
	// 40 KB
	DefaultReadSize = 40960
)
View Source
const (
	LINK_INIT = iota
	LINK_CONN
	LINK_CLOSED
	LINK_BAN_CONN
)

链路状态

View Source
const (
	TempSendQueueLen = 20
)

Variables

View Source
var (
	ErrClientClosed    = errors.New("client closed")
	ErrClientBusy      = errors.New("client is busy")
	ErrRequestTimeout  = errors.New("request timeout")
	ErrConnIdleTimeout = errors.New("conn idle timeout")
	ErrInvalidMessage  = errors.New("invalid message")
	ErrConnUnavailable = errors.New("the connection is unavailable")
	ErrConnClosing     = errors.New("the connection is closing")
	ErrNetworkIO       = errors.New("failed with network I/O error")
)

Functions

func NewRpcError

func NewRpcError(err error) error

Types

type ConnTimeout

type ConnTimeout struct {
	// contains filtered or unexported fields
}

func DialTimeout

func DialTimeout(addr string, timeout time.Duration) (*ConnTimeout, error)

func NewConnTimeout

func NewConnTimeout(conn net.Conn) *ConnTimeout

func (*ConnTimeout) Close

func (c *ConnTimeout) Close() error

func (*ConnTimeout) Read

func (c *ConnTimeout) Read(p []byte) (n int, err error)

func (*ConnTimeout) RemoteAddr

func (c *ConnTimeout) RemoteAddr() string

func (*ConnTimeout) SetReadTimeout

func (c *ConnTimeout) SetReadTimeout(timeout time.Duration)

func (*ConnTimeout) SetWriteTimeout

func (c *ConnTimeout) SetWriteTimeout(timeout time.Duration)

func (*ConnTimeout) Write

func (c *ConnTimeout) Write(p []byte) (n int, err error)

type DSRpcClient

type DSRpcClient struct {
	// contains filtered or unexported fields
}

func NewDSRpcClient

func NewDSRpcClient(addr string, dialFunc DialFunc) *DSRpcClient

func (*DSRpcClient) Close

func (c *DSRpcClient) Close()

func (*DSRpcClient) CreateRange

TODO message

func (*DSRpcClient) Delete

func (*DSRpcClient) DeleteRange

func (*DSRpcClient) GetClientId

func (c *DSRpcClient) GetClientId() int64

func (*DSRpcClient) GetPeerInfo

func (*DSRpcClient) Insert

func (*DSRpcClient) KvBatchGet

func (*DSRpcClient) KvBatchSet

func (*DSRpcClient) KvDel

func (*DSRpcClient) KvGet

func (*DSRpcClient) KvRawDelete

func (*DSRpcClient) KvRawExecute

func (*DSRpcClient) KvRawGet

func (*DSRpcClient) KvRawPut

func (*DSRpcClient) KvScan

func (*DSRpcClient) KvSet

func (*DSRpcClient) Lock

func (*DSRpcClient) LockScan added in v0.6.3

func (*DSRpcClient) LockUpdate

func (*DSRpcClient) OfflineRange

func (*DSRpcClient) ReplaceRange

func (*DSRpcClient) Select

func (*DSRpcClient) Send

func (c *DSRpcClient) Send(ctx context.Context, msg *Message) ([]byte, error)

func (*DSRpcClient) SetNodeLogLevel

func (*DSRpcClient) Unlock

func (*DSRpcClient) UnlockForce

func (*DSRpcClient) UpdateRange

type DialFunc

type DialFunc func(addr string) (*ConnTimeout, error)

type KvClient

type KvClient interface {
	// Close should release all data.
	Close() error
	// SendKVReq sends kv request.
	RawPut(ctx context.Context, addr string, req *kvrpcpb.DsKvRawPutRequest) (*kvrpcpb.DsKvRawPutResponse, error)
	RawGet(ctx context.Context, addr string, req *kvrpcpb.DsKvRawGetRequest) (*kvrpcpb.DsKvRawGetResponse, error)
	RawDelete(ctx context.Context, addr string, req *kvrpcpb.DsKvRawDeleteRequest) (*kvrpcpb.DsKvRawDeleteResponse, error)
	Insert(ctx context.Context, addr string, req *kvrpcpb.DsInsertRequest) (*kvrpcpb.DsInsertResponse, error)
	Select(ctx context.Context, addr string, req *kvrpcpb.DsSelectRequest) (*kvrpcpb.DsSelectResponse, error)
	Delete(ctx context.Context, addr string, req *kvrpcpb.DsDeleteRequest) (*kvrpcpb.DsDeleteResponse, error)

	Lock(ctx context.Context, addr string, req *kvrpcpb.DsLockRequest) (*kvrpcpb.DsLockResponse, error)
	LockUpdate(ctx context.Context, addr string, req *kvrpcpb.DsLockUpdateRequest) (*kvrpcpb.DsLockUpdateResponse, error)
	Unlock(ctx context.Context, addr string, req *kvrpcpb.DsUnlockRequest) (*kvrpcpb.DsUnlockResponse, error)
	UnlockForce(ctx context.Context, addr string, req *kvrpcpb.DsUnlockForceRequest) (*kvrpcpb.DsUnlockForceResponse, error)
	LockScan(ctx context.Context, addr string, req *kvrpcpb.DsLockScanRequest) (*kvrpcpb.DsLockScanResponse, error)

	KvSet(ctx context.Context, addr string, req *kvrpcpb.DsKvSetRequest) (*kvrpcpb.DsKvSetResponse, error)
	KvGet(ctx context.Context, addr string, req *kvrpcpb.DsKvGetRequest) (*kvrpcpb.DsKvGetResponse, error)
	KvBatchSet(ctx context.Context, addr string, req *kvrpcpb.DsKvBatchSetRequest) (*kvrpcpb.DsKvBatchSetResponse, error)
	KvBatchGet(ctx context.Context, addr string, req *kvrpcpb.DsKvBatchGetRequest) (*kvrpcpb.DsKvBatchGetResponse, error)
	KvScan(ctx context.Context, addr string, req *kvrpcpb.DsKvScanRequest) (*kvrpcpb.DsKvScanResponse, error)
	KvDelete(ctx context.Context, addr string, req *kvrpcpb.DsKvDeleteRequest) (*kvrpcpb.DsKvDeleteResponse, error)
	KvBatchDelete(ctx context.Context, addr string, req *kvrpcpb.DsKvBatchDeleteRequest) (*kvrpcpb.DsKvBatchDeleteResponse, error)
	KvRangeDelete(ctx context.Context, addr string, req *kvrpcpb.DsKvRangeDeleteRequest) (*kvrpcpb.DsKvRangeDeleteResponse, error)
}

Client is a client that sends RPC. It should not be used after calling Close().

func NewRPCClient

func NewRPCClient(opts ...int) KvClient

type KvRpcClient

type KvRpcClient struct {
	// contains filtered or unexported fields
}

func (*KvRpcClient) Close

func (c *KvRpcClient) Close() error

func (*KvRpcClient) Delete

func (*KvRpcClient) Insert

func (*KvRpcClient) KvBatchDelete

func (*KvRpcClient) KvBatchGet

func (*KvRpcClient) KvBatchSet

func (*KvRpcClient) KvDelete

func (*KvRpcClient) KvGet

func (*KvRpcClient) KvRangeDelete

func (*KvRpcClient) KvScan

func (*KvRpcClient) KvSet

func (*KvRpcClient) Lock

func (*KvRpcClient) LockScan added in v0.6.3

func (*KvRpcClient) LockUpdate

func (*KvRpcClient) RawDelete

func (*KvRpcClient) RawGet

func (*KvRpcClient) RawPut

func (*KvRpcClient) Select

func (*KvRpcClient) Unlock

func (*KvRpcClient) UnlockForce

type List

type List struct {
	// contains filtered or unexported fields
}

func NewList

func NewList() *List

func (*List) AddElement

func (l *List) AddElement(m *Message) error

func (*List) Cleanup

func (l *List) Cleanup(err error)

func (*List) DelElement

func (l *List) DelElement(id uint64) (*Message, bool)

func (*List) FindElement

func (l *List) FindElement(id uint64) (*Message, bool)

func (*List) Size

func (l *List) Size() int

type Message

type Message struct {
	// contains filtered or unexported fields
}

func (*Message) Back

func (m *Message) Back(err error)

func (*Message) GetData

func (m *Message) GetData() []byte

func (*Message) GetFuncId

func (m *Message) GetFuncId() uint16

func (*Message) GetMsgId

func (m *Message) GetMsgId() uint64

func (*Message) GetMsgType

func (m *Message) GetMsgType() uint16

func (*Message) GetProtoType

func (m *Message) GetProtoType() uint8

func (*Message) GetStreamHash

func (m *Message) GetStreamHash() uint8

func (*Message) GetTimeout

func (m *Message) GetTimeout() uint32

func (*Message) SetData

func (m *Message) SetData(data []byte)

func (*Message) SetFuncId

func (m *Message) SetFuncId(funcId uint16)

func (*Message) SetMsgId

func (m *Message) SetMsgId(msgId uint64)

func (*Message) SetMsgType

func (m *Message) SetMsgType(msgType uint16)

func (*Message) SetProtoType

func (m *Message) SetProtoType(protoType uint8)

func (*Message) SetStreamHash

func (m *Message) SetStreamHash(streamHash uint8)

func (*Message) SetTimeout

func (m *Message) SetTimeout(timeout uint32)

type MsgTypeGroup

type MsgTypeGroup struct {
	// contains filtered or unexported fields
}

func (*MsgTypeGroup) GetRequestMsgType

func (m *MsgTypeGroup) GetRequestMsgType() uint16

func (*MsgTypeGroup) GetResponseMsgType

func (m *MsgTypeGroup) GetResponseMsgType() uint16

type Pool

type Pool struct {
	// contains filtered or unexported fields
}

func NewPool

func NewPool(size int, addr string, fun createConnFunc) (*Pool, error)

func (*Pool) Close

func (p *Pool) Close()

func (*Pool) GetConn

func (p *Pool) GetConn() RpcClient

type ResourcePool

type ResourcePool struct {
	// contains filtered or unexported fields
}

func NewResourcePool

func NewResourcePool(size int) *ResourcePool

func (*ResourcePool) Close

func (rp *ResourcePool) Close()

func (*ResourcePool) GetConn

func (rp *ResourcePool) GetConn(addr string) (RpcClient, error)

type RpcClient

type RpcClient interface {
	// Raw
	KvRawGet(ctx context.Context, in *kvrpcpb.DsKvRawGetRequest) (*kvrpcpb.DsKvRawGetResponse, error)
	KvRawPut(ctx context.Context, in *kvrpcpb.DsKvRawPutRequest) (*kvrpcpb.DsKvRawPutResponse, error)
	KvRawDelete(ctx context.Context, in *kvrpcpb.DsKvRawDeleteRequest) (*kvrpcpb.DsKvRawDeleteResponse, error)
	KvRawExecute(ctx context.Context, in *kvrpcpb.DsKvRawExecuteRequest) (*kvrpcpb.DsKvRawExecuteResponse, error)

	// Sql
	Select(ctx context.Context, in *kvrpcpb.DsSelectRequest) (*kvrpcpb.DsSelectResponse, error)
	Insert(ctx context.Context, in *kvrpcpb.DsInsertRequest) (*kvrpcpb.DsInsertResponse, error)
	Delete(ctx context.Context, in *kvrpcpb.DsDeleteRequest) (*kvrpcpb.DsDeleteResponse, error)

	// lock
	Lock(ctx context.Context, in *kvrpcpb.DsLockRequest) (*kvrpcpb.DsLockResponse, error)
	LockUpdate(ctx context.Context, in *kvrpcpb.DsLockUpdateRequest) (*kvrpcpb.DsLockUpdateResponse, error)
	Unlock(ctx context.Context, in *kvrpcpb.DsUnlockRequest) (*kvrpcpb.DsUnlockResponse, error)
	UnlockForce(ctx context.Context, in *kvrpcpb.DsUnlockForceRequest) (*kvrpcpb.DsUnlockForceResponse, error)
	LockScan(ctx context.Context, in *kvrpcpb.DsLockScanRequest) (*kvrpcpb.DsLockScanResponse, error)

	// kv
	KvSet(ctx context.Context, in *kvrpcpb.DsKvSetRequest) (*kvrpcpb.DsKvSetResponse, error)
	KvGet(ctx context.Context, in *kvrpcpb.DsKvGetRequest) (*kvrpcpb.DsKvGetResponse, error)
	KvBatchSet(ctx context.Context, in *kvrpcpb.DsKvBatchSetRequest) (*kvrpcpb.DsKvBatchSetResponse, error)
	KvBatchGet(ctx context.Context, in *kvrpcpb.DsKvBatchGetRequest) (*kvrpcpb.DsKvBatchGetResponse, error)
	KvScan(ctx context.Context, in *kvrpcpb.DsKvScanRequest) (*kvrpcpb.DsKvScanResponse, error)
	KvDel(ctx context.Context, in *kvrpcpb.DsKvDeleteRequest) (*kvrpcpb.DsKvDeleteResponse, error)
	KvBatchDel(ctx context.Context, in *kvrpcpb.DsKvBatchDeleteRequest) (*kvrpcpb.DsKvBatchDeleteResponse, error)
	KvRangeDel(ctx context.Context, in *kvrpcpb.DsKvRangeDeleteRequest) (*kvrpcpb.DsKvRangeDeleteResponse, error)

	// admin
	CreateRange(ctx context.Context, in *schpb.CreateRangeRequest) (*schpb.CreateRangeResponse, error)
	DeleteRange(ctx context.Context, in *schpb.DeleteRangeRequest) (*schpb.DeleteRangeResponse, error)
	TransferLeader(ctx context.Context, in *schpb.TransferRangeLeaderRequest) (*schpb.TransferRangeLeaderResponse, error)
	UpdateRange(ctx context.Context, in *schpb.UpdateRangeRequest) (*schpb.UpdateRangeResponse, error)
	GetPeerInfo(ctx context.Context, in *schpb.GetPeerInfoRequest) (*schpb.GetPeerInfoResponse, error)
	SetNodeLogLevel(ctx context.Context, in *schpb.SetNodeLogLevelRequest) (*schpb.SetNodeLogLevelResponse, error)
	OfflineRange(ctx context.Context, in *schpb.OfflineRangeRequest) (*schpb.OfflineRangeResponse, error)
	ReplaceRange(ctx context.Context, in *schpb.ReplaceRangeRequest) (*schpb.ReplaceRangeResponse, error)
	Close()
}

type RpcError

type RpcError struct {
	// contains filtered or unexported fields
}

func (*RpcError) Error

func (re *RpcError) Error() string

type SchClient

type SchClient interface {
	// Close should release all data.
	Close() error
	// SendKVReq sends kv request.
	CreateRange(addr string, r *metapb.Range) error
	DeleteRange(addr string, rangeId uint64) error
	TransferLeader(addr string, rangeId uint64) error
	UpdateRange(addr string, r *metapb.Range) error
	GetPeerInfo(addr string, rangeId uint64) (*schpb.GetPeerInfoResponse, error)
	SetNodeLogLevel(addr string, level string) error
	OffLineRange(addr string, rangeId uint64) error
	ReplaceRange(addr string, oldRangeId uint64, newRange *metapb.Range) error
}

Client is a client that sends RPC. It should not be used after calling Close().

func NewSchRPCClient

func NewSchRPCClient(opts ...int) SchClient

type SchRpcClient

type SchRpcClient struct {
	// contains filtered or unexported fields
}

func (*SchRpcClient) Close

func (c *SchRpcClient) Close() error

func (*SchRpcClient) CreateRange

func (c *SchRpcClient) CreateRange(addr string, r *metapb.Range) error

func (*SchRpcClient) DeleteRange

func (c *SchRpcClient) DeleteRange(addr string, rangeId uint64) error

func (*SchRpcClient) GetPeerInfo

func (c *SchRpcClient) GetPeerInfo(addr string, rangeId uint64) (*schpb.GetPeerInfoResponse, error)

func (*SchRpcClient) OffLineRange

func (c *SchRpcClient) OffLineRange(addr string, rangeId uint64) error

func (*SchRpcClient) ReplaceRange

func (c *SchRpcClient) ReplaceRange(addr string, oldRangeId uint64, newRange *metapb.Range) error

func (*SchRpcClient) SetNodeLogLevel

func (c *SchRpcClient) SetNodeLogLevel(addr string, level string) error

func (*SchRpcClient) TransferLeader

func (c *SchRpcClient) TransferLeader(addr string, rangeId uint64) error

func (*SchRpcClient) UpdateRange

func (c *SchRpcClient) UpdateRange(addr string, r *metapb.Range) error

type WaitList

type WaitList struct {
	// contains filtered or unexported fields
}

func NewWaitList

func NewWaitList(size int) *WaitList

func (*WaitList) AddElement

func (wl *WaitList) AddElement(m *Message) error

func (*WaitList) Cleanup

func (wl *WaitList) Cleanup(err error)

func (*WaitList) DelElement

func (wl *WaitList) DelElement(id uint64) (*Message, bool)

func (*WaitList) ElemSize

func (wl *WaitList) ElemSize() int

func (*WaitList) FindElement

func (wl *WaitList) FindElement(id uint64) (*Message, bool)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL