xref: /aosp_15_r20/external/grpc-grpc/include/grpcpp/impl/rpc_method.h (revision cc02d7e222339f7a4f6ba5f422e6413f4bd931f2)
1*cc02d7e2SAndroid Build Coastguard Worker //
2*cc02d7e2SAndroid Build Coastguard Worker //
3*cc02d7e2SAndroid Build Coastguard Worker // Copyright 2015 gRPC authors.
4*cc02d7e2SAndroid Build Coastguard Worker //
5*cc02d7e2SAndroid Build Coastguard Worker // Licensed under the Apache License, Version 2.0 (the "License");
6*cc02d7e2SAndroid Build Coastguard Worker // you may not use this file except in compliance with the License.
7*cc02d7e2SAndroid Build Coastguard Worker // You may obtain a copy of the License at
8*cc02d7e2SAndroid Build Coastguard Worker //
9*cc02d7e2SAndroid Build Coastguard Worker //     http://www.apache.org/licenses/LICENSE-2.0
10*cc02d7e2SAndroid Build Coastguard Worker //
11*cc02d7e2SAndroid Build Coastguard Worker // Unless required by applicable law or agreed to in writing, software
12*cc02d7e2SAndroid Build Coastguard Worker // distributed under the License is distributed on an "AS IS" BASIS,
13*cc02d7e2SAndroid Build Coastguard Worker // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14*cc02d7e2SAndroid Build Coastguard Worker // See the License for the specific language governing permissions and
15*cc02d7e2SAndroid Build Coastguard Worker // limitations under the License.
16*cc02d7e2SAndroid Build Coastguard Worker //
17*cc02d7e2SAndroid Build Coastguard Worker //
18*cc02d7e2SAndroid Build Coastguard Worker 
19*cc02d7e2SAndroid Build Coastguard Worker #ifndef GRPCPP_IMPL_RPC_METHOD_H
20*cc02d7e2SAndroid Build Coastguard Worker #define GRPCPP_IMPL_RPC_METHOD_H
21*cc02d7e2SAndroid Build Coastguard Worker 
22*cc02d7e2SAndroid Build Coastguard Worker #include <memory>
23*cc02d7e2SAndroid Build Coastguard Worker 
24*cc02d7e2SAndroid Build Coastguard Worker #include <grpcpp/impl/codegen/channel_interface.h>
25*cc02d7e2SAndroid Build Coastguard Worker 
26*cc02d7e2SAndroid Build Coastguard Worker namespace grpc {
27*cc02d7e2SAndroid Build Coastguard Worker namespace internal {
28*cc02d7e2SAndroid Build Coastguard Worker /// Descriptor of an RPC method
29*cc02d7e2SAndroid Build Coastguard Worker class RpcMethod {
30*cc02d7e2SAndroid Build Coastguard Worker  public:
31*cc02d7e2SAndroid Build Coastguard Worker   enum RpcType {
32*cc02d7e2SAndroid Build Coastguard Worker     NORMAL_RPC = 0,
33*cc02d7e2SAndroid Build Coastguard Worker     CLIENT_STREAMING,  // request streaming
34*cc02d7e2SAndroid Build Coastguard Worker     SERVER_STREAMING,  // response streaming
35*cc02d7e2SAndroid Build Coastguard Worker     BIDI_STREAMING
36*cc02d7e2SAndroid Build Coastguard Worker   };
37*cc02d7e2SAndroid Build Coastguard Worker 
RpcMethod(const char * name,RpcType type)38*cc02d7e2SAndroid Build Coastguard Worker   RpcMethod(const char* name, RpcType type)
39*cc02d7e2SAndroid Build Coastguard Worker       : name_(name),
40*cc02d7e2SAndroid Build Coastguard Worker         suffix_for_stats_(nullptr),
41*cc02d7e2SAndroid Build Coastguard Worker         method_type_(type),
42*cc02d7e2SAndroid Build Coastguard Worker         channel_tag_(nullptr) {}
43*cc02d7e2SAndroid Build Coastguard Worker 
RpcMethod(const char * name,const char * suffix_for_stats,RpcType type)44*cc02d7e2SAndroid Build Coastguard Worker   RpcMethod(const char* name, const char* suffix_for_stats, RpcType type)
45*cc02d7e2SAndroid Build Coastguard Worker       : name_(name),
46*cc02d7e2SAndroid Build Coastguard Worker         suffix_for_stats_(suffix_for_stats),
47*cc02d7e2SAndroid Build Coastguard Worker         method_type_(type),
48*cc02d7e2SAndroid Build Coastguard Worker         channel_tag_(nullptr) {}
49*cc02d7e2SAndroid Build Coastguard Worker 
RpcMethod(const char * name,RpcType type,const std::shared_ptr<ChannelInterface> & channel)50*cc02d7e2SAndroid Build Coastguard Worker   RpcMethod(const char* name, RpcType type,
51*cc02d7e2SAndroid Build Coastguard Worker             const std::shared_ptr<ChannelInterface>& channel)
52*cc02d7e2SAndroid Build Coastguard Worker       : name_(name),
53*cc02d7e2SAndroid Build Coastguard Worker         suffix_for_stats_(nullptr),
54*cc02d7e2SAndroid Build Coastguard Worker         method_type_(type),
55*cc02d7e2SAndroid Build Coastguard Worker         channel_tag_(channel->RegisterMethod(name)) {}
56*cc02d7e2SAndroid Build Coastguard Worker 
RpcMethod(const char * name,const char * suffix_for_stats,RpcType type,const std::shared_ptr<ChannelInterface> & channel)57*cc02d7e2SAndroid Build Coastguard Worker   RpcMethod(const char* name, const char* suffix_for_stats, RpcType type,
58*cc02d7e2SAndroid Build Coastguard Worker             const std::shared_ptr<ChannelInterface>& channel)
59*cc02d7e2SAndroid Build Coastguard Worker       : name_(name),
60*cc02d7e2SAndroid Build Coastguard Worker         suffix_for_stats_(suffix_for_stats),
61*cc02d7e2SAndroid Build Coastguard Worker         method_type_(type),
62*cc02d7e2SAndroid Build Coastguard Worker         channel_tag_(channel->RegisterMethod(name)) {}
63*cc02d7e2SAndroid Build Coastguard Worker 
name()64*cc02d7e2SAndroid Build Coastguard Worker   const char* name() const { return name_; }
suffix_for_stats()65*cc02d7e2SAndroid Build Coastguard Worker   const char* suffix_for_stats() const { return suffix_for_stats_; }
method_type()66*cc02d7e2SAndroid Build Coastguard Worker   RpcType method_type() const { return method_type_; }
SetMethodType(RpcType type)67*cc02d7e2SAndroid Build Coastguard Worker   void SetMethodType(RpcType type) { method_type_ = type; }
channel_tag()68*cc02d7e2SAndroid Build Coastguard Worker   void* channel_tag() const { return channel_tag_; }
69*cc02d7e2SAndroid Build Coastguard Worker 
70*cc02d7e2SAndroid Build Coastguard Worker  private:
71*cc02d7e2SAndroid Build Coastguard Worker   const char* const name_;
72*cc02d7e2SAndroid Build Coastguard Worker   const char* const suffix_for_stats_;
73*cc02d7e2SAndroid Build Coastguard Worker   RpcType method_type_;
74*cc02d7e2SAndroid Build Coastguard Worker   void* const channel_tag_;
75*cc02d7e2SAndroid Build Coastguard Worker };
76*cc02d7e2SAndroid Build Coastguard Worker 
77*cc02d7e2SAndroid Build Coastguard Worker }  // namespace internal
78*cc02d7e2SAndroid Build Coastguard Worker }  // namespace grpc
79*cc02d7e2SAndroid Build Coastguard Worker 
80*cc02d7e2SAndroid Build Coastguard Worker #endif  // GRPCPP_IMPL_RPC_METHOD_H
81