xref: /aosp_15_r20/external/grpc-grpc/include/grpcpp/impl/call.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_CALL_H
20*cc02d7e2SAndroid Build Coastguard Worker #define GRPCPP_IMPL_CALL_H
21*cc02d7e2SAndroid Build Coastguard Worker 
22*cc02d7e2SAndroid Build Coastguard Worker #include <grpc/impl/grpc_types.h>
23*cc02d7e2SAndroid Build Coastguard Worker #include <grpcpp/impl/call_hook.h>
24*cc02d7e2SAndroid Build Coastguard Worker 
25*cc02d7e2SAndroid Build Coastguard Worker namespace grpc {
26*cc02d7e2SAndroid Build Coastguard Worker class CompletionQueue;
27*cc02d7e2SAndroid Build Coastguard Worker namespace experimental {
28*cc02d7e2SAndroid Build Coastguard Worker class ClientRpcInfo;
29*cc02d7e2SAndroid Build Coastguard Worker class ServerRpcInfo;
30*cc02d7e2SAndroid Build Coastguard Worker }  // namespace experimental
31*cc02d7e2SAndroid Build Coastguard Worker namespace internal {
32*cc02d7e2SAndroid Build Coastguard Worker class CallHook;
33*cc02d7e2SAndroid Build Coastguard Worker class CallOpSetInterface;
34*cc02d7e2SAndroid Build Coastguard Worker 
35*cc02d7e2SAndroid Build Coastguard Worker /// Straightforward wrapping of the C call object
36*cc02d7e2SAndroid Build Coastguard Worker class Call final {
37*cc02d7e2SAndroid Build Coastguard Worker  public:
Call()38*cc02d7e2SAndroid Build Coastguard Worker   Call()
39*cc02d7e2SAndroid Build Coastguard Worker       : call_hook_(nullptr),
40*cc02d7e2SAndroid Build Coastguard Worker         cq_(nullptr),
41*cc02d7e2SAndroid Build Coastguard Worker         call_(nullptr),
42*cc02d7e2SAndroid Build Coastguard Worker         max_receive_message_size_(-1) {}
43*cc02d7e2SAndroid Build Coastguard Worker   /// call is owned by the caller
Call(grpc_call * call,CallHook * call_hook,grpc::CompletionQueue * cq)44*cc02d7e2SAndroid Build Coastguard Worker   Call(grpc_call* call, CallHook* call_hook, grpc::CompletionQueue* cq)
45*cc02d7e2SAndroid Build Coastguard Worker       : call_hook_(call_hook),
46*cc02d7e2SAndroid Build Coastguard Worker         cq_(cq),
47*cc02d7e2SAndroid Build Coastguard Worker         call_(call),
48*cc02d7e2SAndroid Build Coastguard Worker         max_receive_message_size_(-1) {}
49*cc02d7e2SAndroid Build Coastguard Worker 
Call(grpc_call * call,CallHook * call_hook,grpc::CompletionQueue * cq,experimental::ClientRpcInfo * rpc_info)50*cc02d7e2SAndroid Build Coastguard Worker   Call(grpc_call* call, CallHook* call_hook, grpc::CompletionQueue* cq,
51*cc02d7e2SAndroid Build Coastguard Worker        experimental::ClientRpcInfo* rpc_info)
52*cc02d7e2SAndroid Build Coastguard Worker       : call_hook_(call_hook),
53*cc02d7e2SAndroid Build Coastguard Worker         cq_(cq),
54*cc02d7e2SAndroid Build Coastguard Worker         call_(call),
55*cc02d7e2SAndroid Build Coastguard Worker         max_receive_message_size_(-1),
56*cc02d7e2SAndroid Build Coastguard Worker         client_rpc_info_(rpc_info) {}
57*cc02d7e2SAndroid Build Coastguard Worker 
Call(grpc_call * call,CallHook * call_hook,grpc::CompletionQueue * cq,int max_receive_message_size,experimental::ServerRpcInfo * rpc_info)58*cc02d7e2SAndroid Build Coastguard Worker   Call(grpc_call* call, CallHook* call_hook, grpc::CompletionQueue* cq,
59*cc02d7e2SAndroid Build Coastguard Worker        int max_receive_message_size, experimental::ServerRpcInfo* rpc_info)
60*cc02d7e2SAndroid Build Coastguard Worker       : call_hook_(call_hook),
61*cc02d7e2SAndroid Build Coastguard Worker         cq_(cq),
62*cc02d7e2SAndroid Build Coastguard Worker         call_(call),
63*cc02d7e2SAndroid Build Coastguard Worker         max_receive_message_size_(max_receive_message_size),
64*cc02d7e2SAndroid Build Coastguard Worker         server_rpc_info_(rpc_info) {}
65*cc02d7e2SAndroid Build Coastguard Worker 
PerformOps(CallOpSetInterface * ops)66*cc02d7e2SAndroid Build Coastguard Worker   void PerformOps(CallOpSetInterface* ops) {
67*cc02d7e2SAndroid Build Coastguard Worker     call_hook_->PerformOpsOnCall(ops, this);
68*cc02d7e2SAndroid Build Coastguard Worker   }
69*cc02d7e2SAndroid Build Coastguard Worker 
call()70*cc02d7e2SAndroid Build Coastguard Worker   grpc_call* call() const { return call_; }
cq()71*cc02d7e2SAndroid Build Coastguard Worker   grpc::CompletionQueue* cq() const { return cq_; }
72*cc02d7e2SAndroid Build Coastguard Worker 
max_receive_message_size()73*cc02d7e2SAndroid Build Coastguard Worker   int max_receive_message_size() const { return max_receive_message_size_; }
74*cc02d7e2SAndroid Build Coastguard Worker 
client_rpc_info()75*cc02d7e2SAndroid Build Coastguard Worker   experimental::ClientRpcInfo* client_rpc_info() const {
76*cc02d7e2SAndroid Build Coastguard Worker     return client_rpc_info_;
77*cc02d7e2SAndroid Build Coastguard Worker   }
78*cc02d7e2SAndroid Build Coastguard Worker 
server_rpc_info()79*cc02d7e2SAndroid Build Coastguard Worker   experimental::ServerRpcInfo* server_rpc_info() const {
80*cc02d7e2SAndroid Build Coastguard Worker     return server_rpc_info_;
81*cc02d7e2SAndroid Build Coastguard Worker   }
82*cc02d7e2SAndroid Build Coastguard Worker 
83*cc02d7e2SAndroid Build Coastguard Worker  private:
84*cc02d7e2SAndroid Build Coastguard Worker   CallHook* call_hook_;
85*cc02d7e2SAndroid Build Coastguard Worker   grpc::CompletionQueue* cq_;
86*cc02d7e2SAndroid Build Coastguard Worker   grpc_call* call_;
87*cc02d7e2SAndroid Build Coastguard Worker   int max_receive_message_size_;
88*cc02d7e2SAndroid Build Coastguard Worker   experimental::ClientRpcInfo* client_rpc_info_ = nullptr;
89*cc02d7e2SAndroid Build Coastguard Worker   experimental::ServerRpcInfo* server_rpc_info_ = nullptr;
90*cc02d7e2SAndroid Build Coastguard Worker };
91*cc02d7e2SAndroid Build Coastguard Worker }  // namespace internal
92*cc02d7e2SAndroid Build Coastguard Worker }  // namespace grpc
93*cc02d7e2SAndroid Build Coastguard Worker 
94*cc02d7e2SAndroid Build Coastguard Worker #endif  // GRPCPP_IMPL_CALL_H
95