xref: /aosp_15_r20/external/grpc-grpc/examples/php/echo/echo.proto (revision cc02d7e222339f7a4f6ba5f422e6413f4bd931f2)
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