diff --git a/native/cpp/CommonCpp/grpc/protos/tunnelbroker.proto b/native/cpp/CommonCpp/grpc/protos/tunnelbroker.proto --- a/native/cpp/CommonCpp/grpc/protos/tunnelbroker.proto +++ b/native/cpp/CommonCpp/grpc/protos/tunnelbroker.proto @@ -22,7 +22,7 @@ rpc Get(GetRequest) returns (stream GetResponse) {} // Replacing Send and Get with a single bidirectional streaming RPC - rpc OpenStream(stream OutboundMessage) returns (stream InboundMessage) {} + rpc MessagesStream(stream InboundMessage) returns (stream OutboundMessage) {} } // Session @@ -76,19 +76,53 @@ repeated string blobHashes = 3; } -message OutboundMessage { - string toDeviceID = 1; - string payload = 2; - repeated string blobHashes = 3; +// Common messages structures for the MessagesStream + +message ProcessedMessages { + repeated string messageID = 1; +} + +// The messages from the Client to the Tunnelbroker + +message InboundMessageStruct { + string messageID = 1; + string toDeviceID = 2; + string payload = 3; + repeated string blobHashes = 4; +} + +message MessagesToSent { + repeated InboundMessageStruct messages = 1; } message InboundMessage { - string fromDeviceID = 1; - string fromConnectionID = 2; + string sessionID = 1; + oneof data { + MessagesToSent messagesToSent = 2; + ProcessedMessages processedMessages = 3; + } +} + +// The messages from the Tunnelbroker to the Client + +message OutboundMessageStruct { + string messageID = 1; + string fromDeviceID = 2; string payload = 3; repeated string blobHashes = 4; } +message MessagesToDeliver { + repeated OutboundMessageStruct messages = 1; +} + +message OutboundMessage { + oneof data { + MessagesToDeliver messagesToDeliver = 1; + ProcessedMessages processedMessages = 2; + } +} + // Old API structures enum CheckResponseType {