cluster

package
v1.2.3 Latest Latest
Warning

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

Go to latest
Published: Dec 10, 2022 License: MIT Imports: 27 Imported by: 0

Documentation

Index

Constants

View Source
const (
	EventJoin = iota + 1
	EventLeave
	EventUpdate
)
View Source
const (
	LogLevelDebug = "DEBUG"
	LogLevelWarn  = "WARN"
	LogLevelError = "ERROR"
	LogLevelInfo  = "INFO"
)

Variables

This section is empty.

Functions

func Expect

func Expect(t *testing.T, got, want interface{})

Expect compare two values for testing

func GenNodeName

func GenNodeName() string

func GenerateUUID4

func GenerateUUID4() string

GenerateUUID4 create a UUID

func GetIP

func GetIP() string

func InArray

func InArray(val interface{}, array interface{}) bool

func NewOptions

func NewOptions(opts ...Option) *memberlist.Config

func Unset

func Unset(a []string, i int) []string

Unset remove element at position i

Types

type Broadcast

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

func (*Broadcast) Finished

func (b *Broadcast) Finished()

func (*Broadcast) Invalidates

func (b *Broadcast) Invalidates(other memberlist.Broadcast) bool

func (*Broadcast) Message

func (b *Broadcast) Message() []byte

type Cluster

type Cluster struct {
	Config *memberlist.Config
	List   *memberlist.Memberlist
	// contains filtered or unexported fields
}

func Create

func Create(conf *memberlist.Config) (c *Cluster, err error)

func LaunchNode

func LaunchNode(members string, opts ...Option) (*Cluster, error)

func (*Cluster) BindMqttServer

func (c *Cluster) BindMqttServer(server *mqtt.Server)

func (*Cluster) BootstrapRaft

func (c *Cluster) BootstrapRaft(raftPort int, raftDir string) error

func (*Cluster) Broadcast

func (c *Cluster) Broadcast(msg []byte)

func (*Cluster) GetNodeByIP

func (c *Cluster) GetNodeByIP(ipAddr net.IP) *memberlist.Node

func (*Cluster) Join

func (c *Cluster) Join(members []string) (int, error)

func (*Cluster) LocalNode

func (c *Cluster) LocalNode() *memberlist.Node

func (*Cluster) Members

func (c *Cluster) Members() []*memberlist.Node

func (*Cluster) NumMembers

func (c *Cluster) NumMembers() int

func (*Cluster) OnConnect

func (c *Cluster) OnConnect(cl events.Client, pk packets.Packet)

func (*Cluster) OnError

func (c *Cluster) OnError(cl events.Client, err error)

func (*Cluster) OnMessage

func (c *Cluster) OnMessage(cl events.Client, pk packets.Packet) (pkx packets.Packet, err error)

func (*Cluster) OnSubscribe

func (c *Cluster) OnSubscribe(filter string, cl events.Client, qos byte, isFirst bool)

func (*Cluster) OnUnsubscribe

func (c *Cluster) OnUnsubscribe(filter string, cl events.Client, isLast bool)

func (*Cluster) SendToNode

func (c *Cluster) SendToNode(nodename string, msg []byte)

SendToNode send message to a node

func (*Cluster) SendToOthers

func (c *Cluster) SendToOthers(msg []byte)

SendToOthers send message to all nodes except yourself

func (*Cluster) Stat

func (c *Cluster) Stat() map[string]*system.Info

func (*Cluster) Stop

func (c *Cluster) Stop()

type Delegate

type Delegate struct {
	sync.RWMutex

	Mch        chan []byte
	State      map[string]*system.Info
	Broadcasts *memberlist.TransmitLimitedQueue
	LocalNode  *memberlist.Node
	// contains filtered or unexported fields
}

func NewDelegate

func NewDelegate() *Delegate

func (*Delegate) BindMqttServer

func (d *Delegate) BindMqttServer(server *mqtt.Server)

func (*Delegate) Broadcast

func (d *Delegate) Broadcast(data []byte)

Broadcast broadcast to everyone including yourself

func (*Delegate) GetBroadcasts

func (d *Delegate) GetBroadcasts(overhead, limit int) [][]byte

func (*Delegate) InitBroadcasts

func (d *Delegate) InitBroadcasts(list *memberlist.Memberlist)

func (*Delegate) LocalState

func (d *Delegate) LocalState(join bool) []byte

func (*Delegate) MergeRemoteState

func (d *Delegate) MergeRemoteState(buf []byte, join bool)

func (*Delegate) NodeMeta

func (d *Delegate) NodeMeta(limit int) []byte

func (*Delegate) NotifyMsg

func (d *Delegate) NotifyMsg(msg []byte)

func (*Delegate) Stop

func (d *Delegate) Stop()

type Event

type Event struct {
	Type int
	Node *memberlist.Node
}

type NodeEvents

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

func NewEvents

func NewEvents() *NodeEvents

func (*NodeEvents) NotifyJoin

func (n *NodeEvents) NotifyJoin(node *memberlist.Node)

func (*NodeEvents) NotifyLeave

func (n *NodeEvents) NotifyLeave(node *memberlist.Node)

func (*NodeEvents) NotifyUpdate

func (n *NodeEvents) NotifyUpdate(node *memberlist.Node)

type Option

type Option func(conf *memberlist.Config)

func WithAdvertiseAddr

func WithAdvertiseAddr(advertiseAddr string) Option

WithAdvertiseAddr "" default "0.0.0.0"

func WithAdvertisePort

func WithAdvertisePort(advertisePort int) Option

WithAdvertisePort 0 dynamically bind a port

func WithBindAddr

func WithBindAddr(bindAddr string) Option

WithBindAddr "" default "0.0.0.0"

func WithBindPort

func WithBindPort(bindPort int) Option

WithBindPort 0 dynamically bind a port

func WithCIDRsAllowed

func WithCIDRsAllowed(ips []net.IPNet) Option

func WithDelegate

func WithDelegate(delegate memberlist.Delegate) Option

func WithEvent

func WithEvent(event memberlist.EventDelegate) Option

func WithHandoffQueueDepth

func WithHandoffQueueDepth(depth int) Option

func WithLogOutput

func WithLogOutput(writer io.Writer, level string) Option

func WithNodeName

func WithNodeName(name string) Option

WithNodeName the name of this node. This must be unique in the cluster.

func WithPushPullInterval

func WithPushPullInterval(interval int) Option

func WithSecretKey

func WithSecretKey(secretKey []byte) Option

type RoundRobinBalancer

type RoundRobinBalancer struct {
	sync.Mutex
	// contains filtered or unexported fields
}

func NewRoundRobinBalancer

func NewRoundRobinBalancer(cs *Cluster) *RoundRobinBalancer

func (*RoundRobinBalancer) Get

Directories

Path Synopsis
persistence

Jump to

Keyboard shortcuts

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