Skip to content
File

Blob: spec/chord/vnode.go

go28 lines
1package chord
2 
3import "go.miragespace.co/specter/spec/protocol"
4 
5type VNode interface {
6 KV
7 
8 ID() uint64
9 Identity() *protocol.Node
10 
11 Ping() error
12 Notify(predecessor VNode) error
13 
14 FindSuccessor(key uint64) (VNode, error)
15 GetSuccessors() ([]VNode, error)
16 GetPredecessor() (VNode, error)
17 
18 VNodeMembership
19}
20 
21type VNodeMembership interface {
22 RequestToJoin(joiner VNode) (predecessor VNode, succList []VNode, err error)
23 FinishJoin(stabilize bool, release bool) error
24 
25 RequestToLeave(leaver VNode) error
26 FinishLeave(stabilize bool, release bool) error
27}