rpc

package
v2.0.5-rc.0 Latest Latest
Warning

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

Go to latest
Published: Jul 27, 2022 License: Apache-2.0 Imports: 31 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// Identifier of message transmitted or received.
	RPCMessageIDKey = attribute.Key("message.id")

	// The uncompressed size of the message transmitted or received in
	// bytes.
	RPCMessageUncompressedSizeKey = attribute.Key("message.uncompressed_size")
)

Variables

This section is empty.

Functions

func DefaultServerOptions added in v2.0.1

func DefaultServerOptions() []grpc.ServerOption

func ExecuteWithRetry

func ExecuteWithRetry(f func() (any, error), initBackoff float64, maxBackoff float64, maxAttempts int, cause error) (any, error)

func Listen

func Listen(netAddr dfnet.NetAddr) (net.Listener, error)

Listen wraps net.Listen with dfnet.NetAddr Example:

Listen(dfnet.NetAddr{Type: dfnet.UNIX, Addr: "/var/run/df.sock"})
Listen(dfnet.NetAddr{Type: dfnet.TCP, Addr: ":12345"})

func ListenWithPortRange

func ListenWithPortRange(listen string, startPort, endPort int) (net.Listener, int, error)

ListenWithPortRange tries to listen a port between startPort and endPort, return net.Listener and listen port Example:

ListenWithPortRange("0.0.0.0", 12345, 23456)
ListenWithPortRange("192.168.0.1", 12345, 23456)
ListenWithPortRange("192.168.0.1", 0, 0) // random port

func VsockDialer added in v2.0.3

func VsockDialer(_ctx context.Context, address string) (net.Conn, error)

VsockDialer is the dialer for vsock, it expects `address` to be in dfnet.NetAddr.GetEndpoint() format, that is "vsock://cid:port"

func VsockDialerOption added in v2.0.3

func VsockDialerOption(addrs []dfnet.NetAddr, opts []grpc.DialOption) ([]grpc.DialOption, error)

If `addrs` are all vsock addresses, add rpc.VsockDialer to DialOption, and return error if addrs have mixed vsock and other connection types.

Types

type Closer

type Closer interface {
	Close() error
}

type ConnOption

type ConnOption interface {
	// contains filtered or unexported methods
}

func WithConnExpireTime

func WithConnExpireTime(duration time.Duration) ConnOption

func WithDialOption

func WithDialOption(opts []grpc.DialOption) ConnOption

func WithDialTimeout

func WithDialTimeout(dialTimeout time.Duration) ConnOption

func WithGcConnInterval

func WithGcConnInterval(gcConnInterval time.Duration) ConnOption

func WithGcConnTimeout

func WithGcConnTimeout(gcConnTimeout time.Duration) ConnOption

type ConnStatus

type ConnStatus string

TODO Perfect state

type Connection

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

func NewConnection

func NewConnection(ctx context.Context, name string, addrs []dfnet.NetAddr, connOpts []ConnOption) *Connection

func (*Connection) AddServerNodes

func (conn *Connection) AddServerNodes(addrs []dfnet.NetAddr) error

func (*Connection) Close

func (conn *Connection) Close() error

func (*Connection) CorrectKey2NodeRelation

func (conn *Connection) CorrectKey2NodeRelation(tmpHashKey, realHashKey string)

func (*Connection) GetClientConn

func (conn *Connection) GetClientConn(hashKey string, stick bool) (clientConn *grpc.ClientConn, err error)

GetClientConn get conn or bind hashKey to candidate node, don't do the migrate action stick whether hash key need already associated with specify node

func (*Connection) GetClientConnByTarget

func (conn *Connection) GetClientConnByTarget(node string) (*grpc.ClientConn, error)

func (*Connection) GetServerNode

func (conn *Connection) GetServerNode(hashKey string) (string, bool)

GetServerNode

func (*Connection) GetState added in v2.0.2

func (conn *Connection) GetState() []dfnet.NetAddr

func (*Connection) TryMigrate

func (conn *Connection) TryMigrate(key string, cause error, exclusiveNodes []string) (preNode string, err error)

TryMigrate migrate key to another hash node other than exclusiveNodes preNode node before the migration

func (*Connection) UpdateAccessNodeMapByHashKey

func (conn *Connection) UpdateAccessNodeMapByHashKey(key string)

func (*Connection) UpdateAccessNodeMapByServerNode

func (conn *Connection) UpdateAccessNodeMapByServerNode(serverNode string)

func (*Connection) UpdateState

func (conn *Connection) UpdateState(addrs []dfnet.NetAddr)

type RetryMeta

type RetryMeta struct {
	StreamTimes int     // times of replacing stream on the current client
	MaxAttempts int     // limit times for execute
	InitBackoff float64 // second
	MaxBackOff  float64 // second
}

Directories

Path Synopsis
mocks
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.
client/mocks
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.
mocks
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.
client/mocks
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.
mocks
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.
server/mocks
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.
client/mocks
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.
mocks
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.
client/mocks
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.
mocks
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.

Jump to

Keyboard shortcuts

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