File
Blob: spec/chord/vnode.go
| 1 | package chord |
| 2 | |
| 3 | import "go.miragespace.co/specter/spec/protocol" |
| 4 | |
| 5 | type 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 | |
| 21 | type 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 | } |