mesh

package
v0.23.32 Latest Latest
Warning

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

Go to latest
Published: Jun 5, 2023 License: Apache-2.0 Imports: 17 Imported by: 0

Documentation

Index

Constants

View Source
const (
	PeerAddrHeader = 11

	RaftConnectType = 2048
	RaftDataType    = 2049

	ChannelTypeMesh = "ctrl.mesh"
)

Variables

This section is empty.

Functions

This section is empty.

Types

type ClusterState added in v0.22.23

type ClusterState uint32
const (
	ClusterReadWrite ClusterState = 0
	ClusterReadOnly  ClusterState = 1
)

type Env added in v0.22.32

type Env interface {
	GetId() *identity.TokenId
	GetVersionProvider() versions.VersionProvider
	GetEventDispatcher() event.Dispatcher
}

type Mesh

type Mesh interface {
	raft.StreamLayer

	channel.UnderlayAcceptor

	// GetOrConnectPeer returns a peer for the given address. If a peer has already been established,
	// it will be returned, otherwise a new connection will be established
	GetOrConnectPeer(address string, timeout time.Duration) (*Peer, error)
	IsReadOnly() bool

	GetPeerInfo(address string, timeout time.Duration) (raft.ServerID, raft.ServerAddress, error)
	GetAdvertiseAddr() raft.ServerAddress
	GetPeers() map[string]*Peer

	RegisterClusterStateHandler(f func(state ClusterState))
	Init(bindHandler channel.BindHandler)
}

Mesh provides the networking layer to raft

func New

func New(env Env, raftAddr raft.ServerAddress) Mesh

type Peer

type Peer struct {
	Id       raft.ServerID
	Address  string
	Channel  channel.Channel
	RaftConn *raftPeerConn
	Version  *versions.VersionInfo
	// contains filtered or unexported fields
}

func (*Peer) Connect

func (self *Peer) Connect(timeout time.Duration) error

func (*Peer) ContentType

func (self *Peer) ContentType() int32

func (*Peer) HandleClose

func (self *Peer) HandleClose(channel.Channel)

func (*Peer) HandleReceive

func (self *Peer) HandleReceive(m *channel.Message, _ channel.Channel)

Jump to

Keyboard shortcuts

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