rpc Campaign (CampaignRequest) returns (CampaignResponse) { }
rpc Proclaim (ProclaimRequest) returns (ProclaimResponse) { }
rpc Leader (LeaderRequest) returns (LeaderResponse) { }
rpc Observe (LeaderRequest) returns (stream LeaderResponse) { }
rpc Resign (ResignRequest) returns (ResignResponse) { }
message CampaignRequest {
bytes name = 1;
int64 lease = 2;
bytes value = 3;
}
message CampaignResponse {
ResponseHeader header = 1;
LeaderKey leader = 2;
}
message LeaderKey {
bytes name = 1;
bytes key = 2;
int64 rev = 3;
int64 lease = 4;
}
message ProclaimRequest {
LeaderKey leader = 1;
bytes value = 2;
}
message ProclaimResponse {
ResponseHeader header = 1;
}
message LeaderRequest {
bytes name = 1;
}
message LeaderResponse {
ResponseHeader header = 1;
KeyValue kv = 2;
}
leader proclaims shared value
followers observe proclaimed value