GRPC C++  1.30.0
rpc_method.h
Go to the documentation of this file.
1 /*
2  *
3  * Copyright 2015 gRPC authors.
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  */
18 
19 #ifndef GRPCPP_IMPL_CODEGEN_RPC_METHOD_H
20 #define GRPCPP_IMPL_CODEGEN_RPC_METHOD_H
21 
22 #include <memory>
23 
25 
26 namespace grpc {
27 namespace internal {
29 class RpcMethod {
30  public:
31  enum RpcType {
33  CLIENT_STREAMING, // request streaming
34  SERVER_STREAMING, // response streaming
36  };
37 
38  RpcMethod(const char* name, RpcType type)
39  : name_(name), method_type_(type), channel_tag_(NULL) {}
40 
41  RpcMethod(const char* name, RpcType type,
42  const std::shared_ptr<ChannelInterface>& channel)
43  : name_(name),
44  method_type_(type),
45  channel_tag_(channel->RegisterMethod(name)) {}
46 
47  const char* name() const { return name_; }
48  RpcType method_type() const { return method_type_; }
49  void SetMethodType(RpcType type) { method_type_ = type; }
50  void* channel_tag() const { return channel_tag_; }
51 
52  private:
53  const char* const name_;
54  RpcType method_type_;
55  void* const channel_tag_;
56 };
57 
58 } // namespace internal
59 } // namespace grpc
60 
61 #endif // GRPCPP_IMPL_CODEGEN_RPC_METHOD_H
grpc
This header provides an object that reads bytes directly from a grpc::ByteBuffer, via the ZeroCopyInp...
Definition: alarm.h:24
grpc::internal::RpcMethod::SetMethodType
void SetMethodType(RpcType type)
Definition: rpc_method.h:49
grpc::internal::RpcMethod::name
const char * name() const
Definition: rpc_method.h:47
grpc::internal::RpcMethod::CLIENT_STREAMING
Definition: rpc_method.h:33
grpc::internal::RpcMethod::BIDI_STREAMING
Definition: rpc_method.h:35
grpc::internal::RpcMethod::channel_tag
void * channel_tag() const
Definition: rpc_method.h:50
grpc::internal::RpcMethod::RpcMethod
RpcMethod(const char *name, RpcType type)
Definition: rpc_method.h:38
grpc::internal::RpcMethod::SERVER_STREAMING
Definition: rpc_method.h:34
grpc::internal::RpcMethod::RpcType
RpcType
Definition: rpc_method.h:31
grpc::internal::RpcMethod::NORMAL_RPC
Definition: rpc_method.h:32
channel_interface.h
grpc::internal::RpcMethod::RpcMethod
RpcMethod(const char *name, RpcType type, const std::shared_ptr< ChannelInterface > &channel)
Definition: rpc_method.h:41
grpc::internal::RpcMethod::method_type
RpcType method_type() const
Definition: rpc_method.h:48
grpc::internal::RpcMethod
Descriptor of an RPC method.
Definition: rpc_method.h:29