package com.orbekk.same; option java_generic_services = true; message Empty { } message UpdateComponentResponse { required bool success = 1; } // Next tag: 9 message SystemStatus { repeated string extra_info = 7; optional MasterState master_status = 1; repeated Component master_state_component = 2; repeated string extra_master_info = 3; optional ClientState client_status = 4; optional MasterState client_master_status = 8; repeated Component client_state_component = 5; repeated string extra_client_info = 6; } message Component { required string id = 1; required string data = 2; required int64 revision = 3; } // Next tag: 6 message MasterState { optional string master_url = 1; optional int32 master_id = 2; optional string network_name = 3; optional string master_location = 4; optional int64 revision = 5; } // Next tag: 4 message MasterTakeoverResponse { optional bool success = 2; optional ClientState client_state = 3; } message FullStateResponse { optional int64 revision = 1; repeated Component component = 2; } message ClientState { optional string url = 1; optional string location = 2; optional int64 revision = 3; } message NetworkDirectory { repeated MasterState network = 1; } message PaxosRequest { optional ClientState client = 1; optional int32 proposalNumber = 2; } message PaxosResponse { optional int32 result = 1; } service Client { rpc SetState (Component) returns (Empty); rpc MasterDown (MasterState) returns (Empty); rpc MasterTakeover (MasterState) returns (MasterTakeoverResponse); rpc GetFullState (Empty) returns (FullStateResponse); rpc MasterTakeoverFinished (MasterState) returns (Empty); } service Master { rpc JoinNetworkRequest (ClientState) returns (Empty); rpc UpdateStateRequest (Component) returns (UpdateComponentResponse); } service Directory { rpc RegisterNetwork (MasterState) returns (Empty); rpc GetNetworks (Empty) returns (NetworkDirectory); } service Paxos { rpc Propose (PaxosRequest) returns (PaxosResponse); rpc AcceptRequest (PaxosRequest) returns (PaxosResponse); } service SystemService { rpc GetSystemStatus (Empty) returns (SystemStatus); rpc KillMaster (Empty) returns (Empty); }