syntax = "proto3"; enum Type { DEFAULT = 0; } message Arg { enum Locality { INTERNED = 0; REFERENCE = 1; } Locality local = 1; bytes reference_id = 2; bytes data = 3; Type type = 4; } message Task { // Optionally Provided Task Name string name = 1; bytes payload_id = 2; repeated Arg args = 3; } message TaskTicket { bytes return_id = 1; } message PutRequest { bytes data = 1; } message PutResponse { bytes id = 1; } message GetRequest { bytes id = 1; } message GetResponse { bool valid = 1; bytes data = 2; } service TaskServer { rpc GetObject(GetRequest) returns (GetResponse) {} rpc PutObject(PutRequest) returns (PutResponse) {} rpc Schedule(Task) returns (TaskTicket) {} } service WorkServer { rpc GetObject(GetRequest) returns (GetResponse) {} rpc PutObject(PutRequest) returns (PutResponse) {} rpc Execute(stream TaskTicket) returns (stream Task) {} }