GRPC C++  1.81.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 
23 
24 #include <memory>
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  SESSION_RPC // Experimental session RPC
37  };
38 
39  RpcMethod(const char* name, RpcType type)
40  : name_(name),
41  suffix_for_stats_(nullptr),
42  method_type_(type),
43  channel_tag_(nullptr) {}
44 
45  RpcMethod(const char* name, const char* suffix_for_stats, RpcType type)
46  : name_(name),
47  suffix_for_stats_(suffix_for_stats),
48  method_type_(type),
49  channel_tag_(nullptr) {}
50 
51  RpcMethod(const char* name, RpcType type,
52  const std::shared_ptr<ChannelInterface>& channel)
53  : name_(name),
54  suffix_for_stats_(nullptr),
55  method_type_(type),
56  channel_tag_(channel->RegisterMethod(name)) {}
57 
58  RpcMethod(const char* name, const char* suffix_for_stats, RpcType type,
59  const std::shared_ptr<ChannelInterface>& channel)
60  : name_(name),
61  suffix_for_stats_(suffix_for_stats),
62  method_type_(type),
63  channel_tag_(channel->RegisterMethod(name)) {}
64 
65  const char* name() const { return name_; }
66  const char* suffix_for_stats() const { return suffix_for_stats_; }
67  RpcType method_type() const { return method_type_; }
68  void SetMethodType(RpcType type) { method_type_ = type; }
69  void* channel_tag() const { return channel_tag_; }
70 
71  private:
72  const char* const name_;
73  const char* const suffix_for_stats_;
74  RpcType method_type_;
75  void* const channel_tag_;
76 };
77 
78 } // namespace internal
79 } // namespace grpc
80 
81 #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:45
grpc::internal::RpcMethod::SetMethodType
void SetMethodType(RpcType type)
Definition: rpc_method.h:68
grpc::internal::RpcMethod::suffix_for_stats
const char * suffix_for_stats() const
Definition: rpc_method.h:66
grpc::internal::RpcMethod::name
const char * name() const
Definition: rpc_method.h:65
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:69
grpc::internal::RpcMethod::RpcMethod
RpcMethod(const char *name, RpcType type)
Definition: rpc_method.h:39
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:51
grpc::internal::RpcMethod::SESSION_RPC
@ SESSION_RPC
Definition: rpc_method.h:36
grpc::internal::RpcMethod::method_type
RpcType method_type() const
Definition: rpc_method.h:67
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:58