1*cc02d7e2SAndroid Build Coastguard Worker// Copyright 2019 gRPC authors. 2*cc02d7e2SAndroid Build Coastguard Worker// 3*cc02d7e2SAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License"); 4*cc02d7e2SAndroid Build Coastguard Worker// you may not use this file except in compliance with the License. 5*cc02d7e2SAndroid Build Coastguard Worker// You may obtain a copy of the License at 6*cc02d7e2SAndroid Build Coastguard Worker// 7*cc02d7e2SAndroid Build Coastguard Worker// http://www.apache.org/licenses/LICENSE-2.0 8*cc02d7e2SAndroid Build Coastguard Worker// 9*cc02d7e2SAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software 10*cc02d7e2SAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS, 11*cc02d7e2SAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12*cc02d7e2SAndroid Build Coastguard Worker// See the License for the specific language governing permissions and 13*cc02d7e2SAndroid Build Coastguard Worker// limitations under the License. 14*cc02d7e2SAndroid Build Coastguard Worker 15*cc02d7e2SAndroid Build Coastguard Workersyntax = "proto3"; 16*cc02d7e2SAndroid Build Coastguard Worker 17*cc02d7e2SAndroid Build Coastguard Workerpackage grpc.gateway.testing; 18*cc02d7e2SAndroid Build Coastguard Worker 19*cc02d7e2SAndroid Build Coastguard Workermessage Empty {} 20*cc02d7e2SAndroid Build Coastguard Worker 21*cc02d7e2SAndroid Build Coastguard Workermessage EchoRequest { 22*cc02d7e2SAndroid Build Coastguard Worker string message = 1; 23*cc02d7e2SAndroid Build Coastguard Worker} 24*cc02d7e2SAndroid Build Coastguard Worker 25*cc02d7e2SAndroid Build Coastguard Workermessage EchoResponse { 26*cc02d7e2SAndroid Build Coastguard Worker string message = 1; 27*cc02d7e2SAndroid Build Coastguard Worker int32 message_count = 2; 28*cc02d7e2SAndroid Build Coastguard Worker} 29*cc02d7e2SAndroid Build Coastguard Worker 30*cc02d7e2SAndroid Build Coastguard Worker// Request type for server side streaming echo. 31*cc02d7e2SAndroid Build Coastguard Workermessage ServerStreamingEchoRequest { 32*cc02d7e2SAndroid Build Coastguard Worker // Message string for server streaming request. 33*cc02d7e2SAndroid Build Coastguard Worker string message = 1; 34*cc02d7e2SAndroid Build Coastguard Worker 35*cc02d7e2SAndroid Build Coastguard Worker // The total number of messages to be generated before the server 36*cc02d7e2SAndroid Build Coastguard Worker // closes the stream; default is 10. 37*cc02d7e2SAndroid Build Coastguard Worker int32 message_count = 2; 38*cc02d7e2SAndroid Build Coastguard Worker 39*cc02d7e2SAndroid Build Coastguard Worker // The interval (ms) between two server messages. The server implementation 40*cc02d7e2SAndroid Build Coastguard Worker // may enforce some minimum interval (e.g. 100ms) to avoid message overflow. 41*cc02d7e2SAndroid Build Coastguard Worker int32 message_interval = 3; 42*cc02d7e2SAndroid Build Coastguard Worker} 43*cc02d7e2SAndroid Build Coastguard Worker 44*cc02d7e2SAndroid Build Coastguard Worker// Response type for server streaming response. 45*cc02d7e2SAndroid Build Coastguard Workermessage ServerStreamingEchoResponse { 46*cc02d7e2SAndroid Build Coastguard Worker // Response message. 47*cc02d7e2SAndroid Build Coastguard Worker string message = 1; 48*cc02d7e2SAndroid Build Coastguard Worker} 49*cc02d7e2SAndroid Build Coastguard Worker 50*cc02d7e2SAndroid Build Coastguard Worker// Request type for client side streaming echo. 51*cc02d7e2SAndroid Build Coastguard Workermessage ClientStreamingEchoRequest { 52*cc02d7e2SAndroid Build Coastguard Worker // A special value "" indicates that there's no further messages. 53*cc02d7e2SAndroid Build Coastguard Worker string message = 1; 54*cc02d7e2SAndroid Build Coastguard Worker} 55*cc02d7e2SAndroid Build Coastguard Worker 56*cc02d7e2SAndroid Build Coastguard Worker// Response type for client side streaming echo. 57*cc02d7e2SAndroid Build Coastguard Workermessage ClientStreamingEchoResponse { 58*cc02d7e2SAndroid Build Coastguard Worker // Total number of client messages that have been received. 59*cc02d7e2SAndroid Build Coastguard Worker int32 message_count = 1; 60*cc02d7e2SAndroid Build Coastguard Worker} 61*cc02d7e2SAndroid Build Coastguard Worker 62*cc02d7e2SAndroid Build Coastguard Worker// A simple echo service. 63*cc02d7e2SAndroid Build Coastguard Workerservice EchoService { 64*cc02d7e2SAndroid Build Coastguard Worker // One request followed by one response 65*cc02d7e2SAndroid Build Coastguard Worker // The server returns the client message as-is. 66*cc02d7e2SAndroid Build Coastguard Worker rpc Echo(EchoRequest) returns (EchoResponse); 67*cc02d7e2SAndroid Build Coastguard Worker 68*cc02d7e2SAndroid Build Coastguard Worker // Sends back abort status. 69*cc02d7e2SAndroid Build Coastguard Worker rpc EchoAbort(EchoRequest) returns (EchoResponse) {} 70*cc02d7e2SAndroid Build Coastguard Worker 71*cc02d7e2SAndroid Build Coastguard Worker // One empty request, ZERO processing, followed by one empty response 72*cc02d7e2SAndroid Build Coastguard Worker // (minimum effort to do message serialization). 73*cc02d7e2SAndroid Build Coastguard Worker rpc NoOp(Empty) returns (Empty); 74*cc02d7e2SAndroid Build Coastguard Worker 75*cc02d7e2SAndroid Build Coastguard Worker // One request followed by a sequence of responses (streamed download). 76*cc02d7e2SAndroid Build Coastguard Worker // The server will return the same client message repeatedly. 77*cc02d7e2SAndroid Build Coastguard Worker rpc ServerStreamingEcho(ServerStreamingEchoRequest) 78*cc02d7e2SAndroid Build Coastguard Worker returns (stream ServerStreamingEchoResponse); 79*cc02d7e2SAndroid Build Coastguard Worker 80*cc02d7e2SAndroid Build Coastguard Worker // One request followed by a sequence of responses (streamed download). 81*cc02d7e2SAndroid Build Coastguard Worker // The server abort directly. 82*cc02d7e2SAndroid Build Coastguard Worker rpc ServerStreamingEchoAbort(ServerStreamingEchoRequest) 83*cc02d7e2SAndroid Build Coastguard Worker returns (stream ServerStreamingEchoResponse) {} 84*cc02d7e2SAndroid Build Coastguard Worker 85*cc02d7e2SAndroid Build Coastguard Worker // A sequence of requests followed by one response (streamed upload). 86*cc02d7e2SAndroid Build Coastguard Worker // The server returns the total number of messages as the result. 87*cc02d7e2SAndroid Build Coastguard Worker rpc ClientStreamingEcho(stream ClientStreamingEchoRequest) 88*cc02d7e2SAndroid Build Coastguard Worker returns (ClientStreamingEchoResponse); 89*cc02d7e2SAndroid Build Coastguard Worker 90*cc02d7e2SAndroid Build Coastguard Worker // A sequence of requests with each message echoed by the server immediately. 91*cc02d7e2SAndroid Build Coastguard Worker // The server returns the same client messages in order. 92*cc02d7e2SAndroid Build Coastguard Worker // E.g. this is how the speech API works. 93*cc02d7e2SAndroid Build Coastguard Worker rpc FullDuplexEcho(stream EchoRequest) returns (stream EchoResponse); 94*cc02d7e2SAndroid Build Coastguard Worker 95*cc02d7e2SAndroid Build Coastguard Worker // A sequence of requests followed by a sequence of responses. 96*cc02d7e2SAndroid Build Coastguard Worker // The server buffers all the client messages and then returns the same 97*cc02d7e2SAndroid Build Coastguard Worker // client messages one by one after the client half-closes the stream. 98*cc02d7e2SAndroid Build Coastguard Worker // This is how an image recognition API may work. 99*cc02d7e2SAndroid Build Coastguard Worker rpc HalfDuplexEcho(stream EchoRequest) returns (stream EchoResponse); 100*cc02d7e2SAndroid Build Coastguard Worker} 101