Skip to content
File

Blob: spec/proto/chord.proto

protobuf82 lines
1syntax = "proto3";
2package protocol;
3 
4option optimize_for = SPEED;
5option go_package = "go.miragespace.co/specter/spec/protocol";
6 
7import "spec/proto/node.proto";
8 
9service VNodeService {
10 rpc Identity(IdentityRequest) returns (IdentityResponse);
11 rpc Ping(PingRequest) returns (PingResponse);
12 
13 rpc Notify(NotifyRequest) returns (NotifyResponse);
14 rpc FindSuccessor(FindSuccessorRequest) returns (FindSuccessorResponse);
15 rpc GetSuccessors(GetSuccessorsRequest) returns (GetSuccessorsResponse);
16 rpc GetPredecessor(GetPredecessorRequest) returns (GetPredecessorResponse);
17 
18 rpc RequestToJoin(RequestToJoinRequest) returns (RequestToJoinResponse);
19 rpc FinishJoin(MembershipConclusionRequest) returns (MembershipConclusionResponse);
20 rpc RequestToLeave(RequestToLeaveRequest) returns (RequestToLeaveResponse);
21 rpc FinishLeave(MembershipConclusionRequest) returns (MembershipConclusionResponse);
22}
23 
24message Empty {}
25 
26message IdentityRequest {}
27 
28message IdentityResponse {
29 Node identity = 1;
30}
31 
32message PingRequest {}
33 
34message PingResponse {}
35 
36message NotifyRequest {
37 Node predecessor = 1;
38}
39 
40message NotifyResponse {}
41 
42message FindSuccessorRequest {
43 uint64 key = 1;
44}
45 
46message FindSuccessorResponse {
47 Node successor = 1;
48}
49 
50message GetPredecessorRequest {}
51 
52message GetPredecessorResponse {
53 Node predecessor = 1;
54}
55 
56message GetSuccessorsRequest {}
57 
58message GetSuccessorsResponse {
59 repeated Node successors = 1;
60}
61 
62message RequestToJoinRequest {
63 Node joiner = 1;
64}
65 
66message RequestToJoinResponse {
67 Node predecessor = 1;
68 repeated Node successors = 2;
69}
70 
71message RequestToLeaveRequest {
72 Node leaver = 1;
73}
74 
75message RequestToLeaveResponse {}
76 
77message MembershipConclusionRequest {
78 bool stabilize = 1;
79 bool release = 2;
80}
81 
82message MembershipConclusionResponse {}