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