GRPC C++  1.66.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_RPC_METHOD_H
20 #define GRPCPP_IMPL_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),
40  suffix_for_stats_(nullptr),
41  method_type_(type),
42  channel_tag_(nullptr) {}
43 
44  RpcMethod(const char* name, const char* suffix_for_stats, RpcType type)
45  : name_(name),
46  suffix_for_stats_(suffix_for_stats),
47  method_type_(type),
48  channel_tag_(nullptr) {}
49 
50  RpcMethod(const char* name, RpcType type,
51  const std::shared_ptr<ChannelInterface>& channel)
52  : name_(name),
53  suffix_for_stats_(nullptr),
54  method_type_(type),
55  channel_tag_(channel->RegisterMethod(name)) {}
56 
57  RpcMethod(const char* name, const char* suffix_for_stats, RpcType type,
58  const std::shared_ptr<ChannelInterface>& channel)
59  : name_(name),
60  suffix_for_stats_(suffix_for_stats),
61  method_type_(type),
62  channel_tag_(channel->RegisterMethod(name)) {}
63 
64  const char* name() const { return name_; }
65  const char* suffix_for_stats() const { return suffix_for_stats_; }
66  RpcType method_type() const { return method_type_; }
67  void SetMethodType(RpcType type) { method_type_ = type; }
68  void* channel_tag() const { return channel_tag_; }
69 
70  private:
71  const char* const name_;
72  const char* const suffix_for_stats_;
73  RpcType method_type_;
74  void* const channel_tag_;
75 };
76 
77 } // namespace internal
78 } // namespace grpc
79 
80 #endif // GRPCPP_IMPL_RPC_METHOD_H
grpc
An Alarm posts the user-provided tag to its associated completion queue or invokes the user-provided ...
Definition: alarm.h:33
grpc::internal::RpcMethod::RpcMethod
RpcMethod(const char *name, const char *suffix_for_stats, RpcType type)
Definition: rpc_method.h:44
grpc::internal::RpcMethod::SetMethodType
void SetMethodType(RpcType type)
Definition: rpc_method.h:67
grpc::internal::RpcMethod::suffix_for_stats
const char * suffix_for_stats() const
Definition: rpc_method.h:65
grpc::internal::RpcMethod::name
const char * name() const
Definition: rpc_method.h:64
grpc::internal::RpcMethod::CLIENT_STREAMING
@ CLIENT_STREAMING
Definition: rpc_method.h:33
grpc::internal::RpcMethod::BIDI_STREAMING
@ BIDI_STREAMING
Definition: rpc_method.h:35
grpc::internal::RpcMethod::channel_tag
void * channel_tag() const
Definition: rpc_method.h:68
grpc::internal::RpcMethod::RpcMethod
RpcMethod(const char *name, RpcType type)
Definition: rpc_method.h:38
grpc::internal::RpcMethod::SERVER_STREAMING
@ SERVER_STREAMING
Definition: rpc_method.h:34
grpc::internal::RpcMethod::RpcType
RpcType
Definition: rpc_method.h:31
grpc::internal::RpcMethod::NORMAL_RPC
@ 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:50
grpc::internal::RpcMethod::method_type
RpcType method_type() const
Definition: rpc_method.h:66
grpc::internal::RpcMethod
Descriptor of an RPC method.
Definition: rpc_method.h:29
grpc::internal::RpcMethod::RpcMethod
RpcMethod(const char *name, const char *suffix_for_stats, RpcType type, const std::shared_ptr< ChannelInterface > &channel)
Definition: rpc_method.h:57