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