34 #ifndef GRPCXX_IMPL_RPC_SERVICE_METHOD_H
35 #define GRPCXX_IMPL_RPC_SERVICE_METHOD_H
42 #include <grpc++/config.h>
43 #include <grpc++/impl/rpc_method.h>
44 #include <grpc++/status.h>
45 #include <grpc++/stream.h>
49 class StreamContextInterface;
59 const grpc::protobuf::Message* req,
60 grpc::protobuf::Message* resp)
61 : call(c), server_context(context),
request(req), response(resp) {}
64 const grpc::protobuf::Message*
request;
65 grpc::protobuf::Message* response;
71 template <
class ServiceType,
class RequestType,
class ResponseType>
78 : func_(func), service_(service) {}
82 return func_(service_, param.server_context,
83 dynamic_cast<const RequestType*>(param.request),
84 dynamic_cast<ResponseType*>(param.response));
90 ResponseType*)> func_;
92 ServiceType* service_;
96 template <
class ServiceType,
class RequestType,
class ResponseType>
102 ServiceType* service)
103 : func_(func), service_(service) {}
107 return func_(service_, param.server_context, &reader,
108 dynamic_cast<ResponseType*>(param.response));
112 std::function<Status(ServiceType*, ServerContext*, ServerReader<RequestType>*,
113 ResponseType*)> func_;
114 ServiceType* service_;
118 template <
class ServiceType,
class RequestType,
class ResponseType>
124 ServiceType* service)
125 : func_(func), service_(service) {}
129 return func_(service_, param.server_context,
130 dynamic_cast<const RequestType*>(param.request), &writer);
136 ServiceType* service_;
140 template <
class ServiceType,
class RequestType,
class ResponseType>
147 ServiceType* service)
148 : func_(func), service_(service) {}
152 param.server_context);
153 return func_(service_, param.server_context, &stream);
159 ServiceType* service_;
168 grpc::protobuf::Message* request_prototype,
169 grpc::protobuf::Message* response_prototype)
172 request_prototype_(request_prototype),
173 response_prototype_(response_prototype) {}
177 grpc::protobuf::Message* AllocateRequestProto() {
178 return request_prototype_->New();
180 grpc::protobuf::Message* AllocateResponseProto() {
181 return response_prototype_->New();
185 std::unique_ptr<MethodHandler> handler_;
186 std::unique_ptr<grpc::protobuf::Message> request_prototype_;
187 std::unique_ptr<grpc::protobuf::Message> response_prototype_;
198 int GetMethodCount()
const {
return methods_.size(); }
201 std::vector<std::unique_ptr<RpcServiceMethod>> methods_;
206 #endif // GRPCXX_IMPL_RPC_SERVICE_METHOD_H
Definition: rpc_service_method.h:57
Definition: rpc_service_method.h:119
Definition: completion_queue.h:53
Definition: rpc_service_method.h:141
Definition: rpc_service_method.h:72
Definition: rpc_service_method.h:163
Definition: rpc_service_method.h:97
Definition: completion_queue.h:55
Definition: chttp2_transport.c:307
Definition: completion_queue.h:57
Definition: rpc_service_method.h:192
Definition: rpc_service_method.h:54
Definition: rpc_method.h:39
Definition: server_context.h:70
Definition: channel_create.c:62