Documentation
¶
Index ¶
- Constants
- Variables
- type Address
- type Boardcast
- type BoardcastQueue
- type BytesPool
- type Config
- func (c *Config) OpenLogDetail(detail bool) *Config
- func (c *Config) SetAdvertiserIP(ip string) *Config
- func (c *Config) SetBindIP(ip string) *Config
- func (c *Config) SetFanout(fanout int) *Config
- func (c *Config) SetGossipInterval(d time.Duration) *Config
- func (c *Config) SetLogLevel(level slog.Level) *Config
- func (c *Config) SetLogWriter(w io.Writer) *Config
- func (c *Config) SetPingInterval(d time.Duration) *Config
- func (c *Config) SetPort(port int) *Config
- func (c *Config) SetPushPullInterval(d time.Duration) *Config
- func (c *Config) SetTCPTimeout(d time.Duration) *Config
- func (c *Config) SetUDPBufferSize(size int) *Config
- type GossipBoardcast
- type KV
- type KVEventFunc
- type KVEventType
- type KeyValuePayload
- type Message
- type MessageType
- type Node
- type NodeEventDelegate
- type NodeEventType
- type NodeInfoPayload
- type NodeLocalInfo
- type NodeStateType
- type Packet
- type PacketHandlerFunc
- type SyncMember
- func (s *SyncMember) AddNode(node *Node)
- func (s *SyncMember) DeleteKV(key string)
- func (s *SyncMember) GetNodeState(addr string) NodeStateType
- func (s *SyncMember) GetValue(key string) []byte
- func (s *SyncMember) Join(addr string) error
- func (s *SyncMember) MergeNodes(remote []NodeInfoPayload) error
- func (s *SyncMember) Node() Address
- func (s *SyncMember) RemoveKVWatcher(key string, kvEventType KVEventType)
- func (s *SyncMember) Run() error
- func (s *SyncMember) SetKV(key string, value []byte)
- func (s *SyncMember) SetKVWatcher(key string, kvEventType KVEventType, fn KVEventFunc)
- func (s *SyncMember) SetNodeDelegate(delegate NodeEventDelegate)
- func (s *SyncMember) Shutdown()
- func (s *SyncMember) UpdateKV(key string, value []byte)
- func (s *SyncMember) WaitKVDelete(key string) <-chan []byte
- func (s *SyncMember) WaitKVSet(key string) <-chan []byte
- func (s *SyncMember) WaitKVUpdate(key string) <-chan []byte
Constants ¶
View Source
const (
KVEventNums int8 = 3
)
Variables ¶
View Source
var ( //Interval FastPingInterval = 200 * time.Millisecond NormalPingInterval = 400 * time.Millisecond SlowPingInterval = 1 * time.Second DefaultPingInterval = NormalPingInterval FastPushPullInterval = 20 * time.Second NormalPushPullInterval = 40 * time.Second SlowPushPullInterval = 60 * time.Second DefaultPushPullInterval = NormalPushPullInterval FastGossipInterval = 200 * time.Millisecond NormalGossipInterval = 400 * time.Millisecond SlowGossipInterval = 1 * time.Second DefaultGossipInterval = NormalGossipInterval //Ping and Goosip DefaultFanout = 3 DefaultUDPBufferSize = 1500 DefaultPushPullNums = 1 //Net DefaultTCPTimeout = 5 * time.Second BindAllIP = net.ParseIP("0.0.0.0") BindLoopBackIP = net.ParseIP("127.0.0.1") DefaultBindPort = 9632 LocalAdvertiseIP = net.ParseIP("127.0.0.1") DefaultAdvertisePort = DefaultBindPort //Log DefaultLogLevel = slog.LevelInfo OpenLogDetail = true CloseLogDetail = false DefaultLogWriter = os.Stderr )
View Source
var ( DefaultConfig = func() *Config { return &Config{ BindIP: BindAllIP, BindPort: DefaultBindPort, AdvertisePort: DefaultAdvertisePort, PingInterval: DefaultPingInterval, PushPullInterval: DefaultPushPullInterval, GossipInterval: DefaultGossipInterval, TCPTimeout: DefaultTCPTimeout, LogDetail: CloseLogDetail, LogLevel: DefaultLogLevel, LogWriter: DefaultLogWriter, Fanout: DefaultFanout, UDPBufferSize: DefaultUDPBufferSize, } } DebugConfig = func() *Config { return &Config{ BindIP: BindAllIP, BindPort: DefaultBindPort, AdvertisePort: DefaultAdvertisePort, PingInterval: FastGossipInterval, PushPullInterval: FastPushPullInterval, GossipInterval: FastGossipInterval, TCPTimeout: DefaultTCPTimeout, LogDetail: OpenLogDetail, LogLevel: slog.LevelDebug, LogWriter: DefaultLogWriter, Fanout: DefaultFanout, PushPullNums: DefaultPushPullNums, UDPBufferSize: DefaultUDPBufferSize, } } )
Functions ¶
This section is empty.
Types ¶
type BoardcastQueue ¶
type BoardcastQueue struct {
// contains filtered or unexported fields
}
func (*BoardcastQueue) GetGossipBoardcast ¶
func (b *BoardcastQueue) GetGossipBoardcast(availableBytes int) []*Message
func (*BoardcastQueue) PutMessage ¶
func (b *BoardcastQueue) PutMessage(msgType MessageType, name string, payload []byte)
type Config ¶
type Config struct { BindIP net.IP BindPort int AdvertiseIP net.IP AdvertisePort int PingInterval time.Duration PushPullInterval time.Duration GossipInterval time.Duration TCPTimeout time.Duration LogLevel slog.Level LogWriter io.Writer LogDetail bool Fanout int PushPullNums int UDPBufferSize int }
func (*Config) OpenLogDetail ¶
func (*Config) SetAdvertiserIP ¶
func (*Config) SetUDPBufferSize ¶
type GossipBoardcast ¶
type GossipBoardcast struct {
// contains filtered or unexported fields
}
type KVEventFunc ¶
type KVEventFunc func(kv *KV)
KVEventFunc
EventKVSet kv <- after set
EventKVDelete kv <- before delete
EventKVUpdate kv <- after update
type KVEventType ¶
type KVEventType int8
const ( EventKVSet KVEventType = iota EventKVDelete EventKVUpdate )
type KeyValuePayload ¶
func (*KeyValuePayload) Decode ¶
func (p *KeyValuePayload) Decode(b []byte) error
func (*KeyValuePayload) Encode ¶
func (p *KeyValuePayload) Encode() *bytes.Buffer
type Message ¶
type Message struct { MsgType MessageType Seq uint64 //FIXME: 暂时不起作用 Payload []byte }
func (*Message) GetPayload ¶
type MessageType ¶
type MessageType int8
const ( Ping MessageType = iota Pong Alive Dead KVSet KVDelete KVUpdate )
func (MessageType) String ¶
func (m MessageType) String() string
type Node ¶
type Node struct {
// contains filtered or unexported fields
}
func (*Node) GetInfo ¶
func (n *Node) GetInfo() NodeInfoPayload
func (*Node) IsCredible ¶
func (*Node) NodeState ¶
func (n *Node) NodeState() NodeStateType
type NodeEventDelegate ¶
type NodeEventType ¶
type NodeEventType int8
const ( DelegateNodeAlive NodeEventType = iota DelegateNodeDead )
type NodeInfoPayload ¶
type NodeInfoPayload struct { Addr Address NodeState NodeStateType Version int64 }
func (*NodeInfoPayload) Decode ¶
func (p *NodeInfoPayload) Decode(b []byte) error
func (*NodeInfoPayload) Encode ¶
func (p *NodeInfoPayload) Encode() *bytes.Buffer
type NodeLocalInfo ¶
type NodeLocalInfo struct {
// contains filtered or unexported fields
}
type NodeStateType ¶
type NodeStateType int8
const ( NodeUnknown NodeStateType = iota NodeDead NodeAlive )
type PacketHandlerFunc ¶
type PacketHandlerFunc func(packet *Packet)
type SyncMember ¶
type SyncMember struct {
// contains filtered or unexported fields
}
func NewSyncMember ¶
func NewSyncMember(nodeName string, config *Config) *SyncMember
func (*SyncMember) AddNode ¶
func (s *SyncMember) AddNode(node *Node)
func (*SyncMember) DeleteKV ¶
func (s *SyncMember) DeleteKV(key string)
func (*SyncMember) GetNodeState ¶
func (s *SyncMember) GetNodeState(addr string) NodeStateType
func (*SyncMember) GetValue ¶
func (s *SyncMember) GetValue(key string) []byte
func (*SyncMember) Join ¶
func (s *SyncMember) Join(addr string) error
func (*SyncMember) MergeNodes ¶
func (s *SyncMember) MergeNodes(remote []NodeInfoPayload) error
func (*SyncMember) Node ¶
func (s *SyncMember) Node() Address
func (*SyncMember) RemoveKVWatcher ¶
func (s *SyncMember) RemoveKVWatcher(key string, kvEventType KVEventType)
func (*SyncMember) Run ¶
func (s *SyncMember) Run() error
func (*SyncMember) SetKV ¶
func (s *SyncMember) SetKV(key string, value []byte)
func (*SyncMember) SetKVWatcher ¶
func (s *SyncMember) SetKVWatcher(key string, kvEventType KVEventType, fn KVEventFunc)
func (*SyncMember) SetNodeDelegate ¶
func (s *SyncMember) SetNodeDelegate(delegate NodeEventDelegate)
func (*SyncMember) Shutdown ¶
func (s *SyncMember) Shutdown()
func (*SyncMember) UpdateKV ¶
func (s *SyncMember) UpdateKV(key string, value []byte)
func (*SyncMember) WaitKVDelete ¶
func (s *SyncMember) WaitKVDelete(key string) <-chan []byte
WaitKVDelete 用于等待某个key被删除
return 被删除的值
会覆盖之前的watcher
func (*SyncMember) WaitKVSet ¶
func (s *SyncMember) WaitKVSet(key string) <-chan []byte
WaitKVSet 用于等待某个key被设置
return 设置的值
会覆盖之前的watcher
func (*SyncMember) WaitKVUpdate ¶
func (s *SyncMember) WaitKVUpdate(key string) <-chan []byte
WaitKVUpdate 用于等待某个key被更新
return 更新后的值
会覆盖之前的watcher
Source Files
¶
Click to show internal directories.
Click to hide internal directories.