xref: /aosp_15_r20/external/tensorflow/tensorflow/core/distributed_runtime/rpc/grpc_master_service_impl.h (revision b6fb3261f9314811a0f4371741dbb8839866f948)
1 /* Copyright 2016 The TensorFlow Authors. All Rights Reserved.
2 
3 Licensed under the Apache License, Version 2.0 (the "License");
4 you may not use this file except in compliance with the License.
5 You may obtain a copy of the License at
6 
7     http://www.apache.org/licenses/LICENSE-2.0
8 
9 Unless required by applicable law or agreed to in writing, software
10 distributed under the License is distributed on an "AS IS" BASIS,
11 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 See the License for the specific language governing permissions and
13 limitations under the License.
14 ==============================================================================*/
15 
16 #ifndef TENSORFLOW_CORE_DISTRIBUTED_RUNTIME_RPC_GRPC_MASTER_SERVICE_IMPL_H_
17 #define TENSORFLOW_CORE_DISTRIBUTED_RUNTIME_RPC_GRPC_MASTER_SERVICE_IMPL_H_
18 
19 #include "grpcpp/impl/codegen/async_stream.h"
20 #include "grpcpp/impl/codegen/async_unary_call.h"
21 #include "grpcpp/impl/codegen/client_context.h"
22 #include "grpcpp/impl/codegen/completion_queue.h"
23 #include "grpcpp/impl/codegen/proto_utils.h"
24 #include "grpcpp/impl/codegen/rpc_method.h"
25 #include "grpcpp/impl/codegen/server_context.h"
26 #include "grpcpp/impl/codegen/service_type.h"
27 #include "grpcpp/impl/codegen/status.h"
28 #include "grpcpp/impl/codegen/stub_options.h"
29 #include "grpcpp/impl/codegen/sync_stream.h"
30 #include "tensorflow/core/protobuf/master.pb.h"
31 
32 namespace tensorflow {
33 
34 namespace grpc {
35 
36 // Implementation of `tensorflow.MasterService`, based on the
37 // definition in "//tensorflow/core/protobuf/master_service.proto",
38 // and the gRPC generated stub and service classes.
39 // See that file for the definition of methods and messages.
40 class MasterService final {
41  public:
42   class StubInterface {
43    public:
~StubInterface()44     virtual ~StubInterface() {}
45     virtual ::grpc::Status CreateSession(::grpc::ClientContext* context,
46                                          const CreateSessionRequest& request,
47                                          CreateSessionResponse* response) = 0;
48     virtual ::grpc::Status ExtendSession(::grpc::ClientContext* context,
49                                          const ExtendSessionRequest& request,
50                                          ExtendSessionResponse* response) = 0;
51     virtual ::grpc::Status PartialRunSetup(
52         ::grpc::ClientContext* context, const PartialRunSetupRequest& request,
53         PartialRunSetupResponse* response) = 0;
54     virtual ::grpc::Status RunStep(::grpc::ClientContext* context,
55                                    const RunStepRequest& request,
56                                    RunStepResponse* response) = 0;
57     virtual ::grpc::Status CloseSession(::grpc::ClientContext* context,
58                                         const CloseSessionRequest& request,
59                                         CloseSessionResponse* response) = 0;
60     virtual ::grpc::Status ListDevices(::grpc::ClientContext* context,
61                                        const ListDevicesRequest& request,
62                                        ListDevicesResponse* response) = 0;
63     virtual ::grpc::Status Reset(::grpc::ClientContext* context,
64                                  const ResetRequest& request,
65                                  ResetResponse* response) = 0;
66     virtual ::grpc::Status MakeCallable(::grpc::ClientContext* context,
67                                         const MakeCallableRequest& request,
68                                         MakeCallableResponse* response) = 0;
69     virtual ::grpc::Status RunCallable(::grpc::ClientContext* context,
70                                        const RunCallableRequest& request,
71                                        RunCallableResponse* response) = 0;
72     virtual ::grpc::Status ReleaseCallable(
73         ::grpc::ClientContext* context, const ReleaseCallableRequest& request,
74         ReleaseCallableResponse* response) = 0;
75   };
76   class Stub final : public StubInterface {
77    public:
78     Stub(const std::shared_ptr< ::grpc::ChannelInterface>& channel);
79     ::grpc::Status CreateSession(::grpc::ClientContext* context,
80                                  const CreateSessionRequest& request,
81                                  CreateSessionResponse* response) override;
82     ::grpc::Status ExtendSession(::grpc::ClientContext* context,
83                                  const ExtendSessionRequest& request,
84                                  ExtendSessionResponse* response) override;
85     ::grpc::Status PartialRunSetup(::grpc::ClientContext* context,
86                                    const PartialRunSetupRequest& request,
87                                    PartialRunSetupResponse* response) override;
88     ::grpc::Status RunStep(::grpc::ClientContext* context,
89                            const RunStepRequest& request,
90                            RunStepResponse* response) override;
91     ::grpc::Status CloseSession(::grpc::ClientContext* context,
92                                 const CloseSessionRequest& request,
93                                 CloseSessionResponse* response) override;
94     ::grpc::Status ListDevices(::grpc::ClientContext* context,
95                                const ListDevicesRequest& request,
96                                ListDevicesResponse* response) override;
97     ::grpc::Status Reset(::grpc::ClientContext* context,
98                          const ResetRequest& request,
99                          ResetResponse* response) override;
100     ::grpc::Status MakeCallable(::grpc::ClientContext* context,
101                                 const MakeCallableRequest& request,
102                                 MakeCallableResponse* response) override;
103     ::grpc::Status RunCallable(::grpc::ClientContext* context,
104                                const RunCallableRequest& request,
105                                RunCallableResponse* response) override;
106     ::grpc::Status ReleaseCallable(::grpc::ClientContext* context,
107                                    const ReleaseCallableRequest& request,
108                                    ReleaseCallableResponse* response) override;
109 
110    private:
111     std::shared_ptr< ::grpc::ChannelInterface> channel_;
112     const ::grpc::internal::RpcMethod rpcmethod_CreateSession_;
113     const ::grpc::internal::RpcMethod rpcmethod_ExtendSession_;
114     const ::grpc::internal::RpcMethod rpcmethod_PartialRunSetup_;
115     const ::grpc::internal::RpcMethod rpcmethod_RunStep_;
116     const ::grpc::internal::RpcMethod rpcmethod_CloseSession_;
117     const ::grpc::internal::RpcMethod rpcmethod_ListDevices_;
118     const ::grpc::internal::RpcMethod rpcmethod_Reset_;
119     const ::grpc::internal::RpcMethod rpcmethod_MakeCallable_;
120     const ::grpc::internal::RpcMethod rpcmethod_RunCallable_;
121     const ::grpc::internal::RpcMethod rpcmethod_ReleaseCallable_;
122   };
123   static std::unique_ptr<Stub> NewStub(
124       const std::shared_ptr< ::grpc::ChannelInterface>& channel,
125       const ::grpc::StubOptions& options = ::grpc::StubOptions());
126 
127   class AsyncService : public ::grpc::Service {
128    public:
129     AsyncService();
130     virtual ~AsyncService();
RequestCreateSession(::grpc::ServerContext * context,CreateSessionRequest * request,::grpc::ServerAsyncResponseWriter<CreateSessionResponse> * response,::grpc::CompletionQueue * new_call_cq,::grpc::ServerCompletionQueue * notification_cq,void * tag)131     void RequestCreateSession(
132         ::grpc::ServerContext* context, CreateSessionRequest* request,
133         ::grpc::ServerAsyncResponseWriter<CreateSessionResponse>* response,
134         ::grpc::CompletionQueue* new_call_cq,
135         ::grpc::ServerCompletionQueue* notification_cq, void* tag) {
136       ::grpc::Service::RequestAsyncUnary(0, context, request, response,
137                                          new_call_cq, notification_cq, tag);
138     }
RequestExtendSession(::grpc::ServerContext * context,ExtendSessionRequest * request,::grpc::ServerAsyncResponseWriter<ExtendSessionResponse> * response,::grpc::CompletionQueue * new_call_cq,::grpc::ServerCompletionQueue * notification_cq,void * tag)139     void RequestExtendSession(
140         ::grpc::ServerContext* context, ExtendSessionRequest* request,
141         ::grpc::ServerAsyncResponseWriter<ExtendSessionResponse>* response,
142         ::grpc::CompletionQueue* new_call_cq,
143         ::grpc::ServerCompletionQueue* notification_cq, void* tag) {
144       ::grpc::Service::RequestAsyncUnary(1, context, request, response,
145                                          new_call_cq, notification_cq, tag);
146     }
RequestPartialRunSetup(::grpc::ServerContext * context,PartialRunSetupRequest * request,::grpc::ServerAsyncResponseWriter<PartialRunSetupResponse> * response,::grpc::CompletionQueue * new_call_cq,::grpc::ServerCompletionQueue * notification_cq,void * tag)147     void RequestPartialRunSetup(
148         ::grpc::ServerContext* context, PartialRunSetupRequest* request,
149         ::grpc::ServerAsyncResponseWriter<PartialRunSetupResponse>* response,
150         ::grpc::CompletionQueue* new_call_cq,
151         ::grpc::ServerCompletionQueue* notification_cq, void* tag) {
152       ::grpc::Service::RequestAsyncUnary(2, context, request, response,
153                                          new_call_cq, notification_cq, tag);
154     }
RequestRunStep(::grpc::ServerContext * context,RunStepRequest * request,::grpc::ServerAsyncResponseWriter<RunStepResponse> * response,::grpc::CompletionQueue * new_call_cq,::grpc::ServerCompletionQueue * notification_cq,void * tag)155     void RequestRunStep(
156         ::grpc::ServerContext* context, RunStepRequest* request,
157         ::grpc::ServerAsyncResponseWriter<RunStepResponse>* response,
158         ::grpc::CompletionQueue* new_call_cq,
159         ::grpc::ServerCompletionQueue* notification_cq, void* tag) {
160       ::grpc::Service::RequestAsyncUnary(3, context, request, response,
161                                          new_call_cq, notification_cq, tag);
162     }
RequestCloseSession(::grpc::ServerContext * context,CloseSessionRequest * request,::grpc::ServerAsyncResponseWriter<CloseSessionResponse> * response,::grpc::CompletionQueue * new_call_cq,::grpc::ServerCompletionQueue * notification_cq,void * tag)163     void RequestCloseSession(
164         ::grpc::ServerContext* context, CloseSessionRequest* request,
165         ::grpc::ServerAsyncResponseWriter<CloseSessionResponse>* response,
166         ::grpc::CompletionQueue* new_call_cq,
167         ::grpc::ServerCompletionQueue* notification_cq, void* tag) {
168       ::grpc::Service::RequestAsyncUnary(4, context, request, response,
169                                          new_call_cq, notification_cq, tag);
170     }
RequestListDevices(::grpc::ServerContext * context,ListDevicesRequest * request,::grpc::ServerAsyncResponseWriter<ListDevicesResponse> * response,::grpc::CompletionQueue * new_call_cq,::grpc::ServerCompletionQueue * notification_cq,void * tag)171     void RequestListDevices(
172         ::grpc::ServerContext* context, ListDevicesRequest* request,
173         ::grpc::ServerAsyncResponseWriter<ListDevicesResponse>* response,
174         ::grpc::CompletionQueue* new_call_cq,
175         ::grpc::ServerCompletionQueue* notification_cq, void* tag) {
176       ::grpc::Service::RequestAsyncUnary(5, context, request, response,
177                                          new_call_cq, notification_cq, tag);
178     }
RequestReset(::grpc::ServerContext * context,ResetRequest * request,::grpc::ServerAsyncResponseWriter<ResetResponse> * response,::grpc::CompletionQueue * new_call_cq,::grpc::ServerCompletionQueue * notification_cq,void * tag)179     void RequestReset(
180         ::grpc::ServerContext* context, ResetRequest* request,
181         ::grpc::ServerAsyncResponseWriter<ResetResponse>* response,
182         ::grpc::CompletionQueue* new_call_cq,
183         ::grpc::ServerCompletionQueue* notification_cq, void* tag) {
184       ::grpc::Service::RequestAsyncUnary(6, context, request, response,
185                                          new_call_cq, notification_cq, tag);
186     }
RequestMakeCallable(::grpc::ServerContext * context,MakeCallableRequest * request,::grpc::ServerAsyncResponseWriter<MakeCallableResponse> * response,::grpc::CompletionQueue * new_call_cq,::grpc::ServerCompletionQueue * notification_cq,void * tag)187     void RequestMakeCallable(
188         ::grpc::ServerContext* context, MakeCallableRequest* request,
189         ::grpc::ServerAsyncResponseWriter<MakeCallableResponse>* response,
190         ::grpc::CompletionQueue* new_call_cq,
191         ::grpc::ServerCompletionQueue* notification_cq, void* tag) {
192       ::grpc::Service::RequestAsyncUnary(7, context, request, response,
193                                          new_call_cq, notification_cq, tag);
194     }
RequestRunCallable(::grpc::ServerContext * context,RunCallableRequest * request,::grpc::ServerAsyncResponseWriter<RunCallableResponse> * response,::grpc::CompletionQueue * new_call_cq,::grpc::ServerCompletionQueue * notification_cq,void * tag)195     void RequestRunCallable(
196         ::grpc::ServerContext* context, RunCallableRequest* request,
197         ::grpc::ServerAsyncResponseWriter<RunCallableResponse>* response,
198         ::grpc::CompletionQueue* new_call_cq,
199         ::grpc::ServerCompletionQueue* notification_cq, void* tag) {
200       ::grpc::Service::RequestAsyncUnary(8, context, request, response,
201                                          new_call_cq, notification_cq, tag);
202     }
RequestReleaseCallable(::grpc::ServerContext * context,ReleaseCallableRequest * request,::grpc::ServerAsyncResponseWriter<ReleaseCallableResponse> * response,::grpc::CompletionQueue * new_call_cq,::grpc::ServerCompletionQueue * notification_cq,void * tag)203     void RequestReleaseCallable(
204         ::grpc::ServerContext* context, ReleaseCallableRequest* request,
205         ::grpc::ServerAsyncResponseWriter<ReleaseCallableResponse>* response,
206         ::grpc::CompletionQueue* new_call_cq,
207         ::grpc::ServerCompletionQueue* notification_cq, void* tag) {
208       ::grpc::Service::RequestAsyncUnary(9, context, request, response,
209                                          new_call_cq, notification_cq, tag);
210     }
211   };
212 };
213 
214 }  // namespace grpc
215 
216 }  // namespace tensorflow
217 
218 #endif  // TENSORFLOW_CORE_DISTRIBUTED_RUNTIME_RPC_GRPC_MASTER_SERVICE_IMPL_H_
219