| /* | |
| * | |
| * Copyright 2018 gRPC authors. | |
| * | |
| * Licensed under the Apache License, Version 2.0 (the "License"); | |
| * you may not use this file except in compliance with the License. | |
| * You may obtain a copy of the License at | |
| * | |
| * http://www.apache.org/licenses/LICENSE-2.0 | |
| * | |
| * Unless required by applicable law or agreed to in writing, software | |
| * distributed under the License is distributed on an "AS IS" BASIS, | |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| * See the License for the specific language governing permissions and | |
| * limitations under the License. | |
| * | |
| */ | |
| #ifndef GRPCPP_IMPL_CODEGEN_CALL_H | |
| #define GRPCPP_IMPL_CODEGEN_CALL_H | |
| #include <grpc/impl/codegen/grpc_types.h> | |
| #include <grpcpp/impl/codegen/call_hook.h> | |
| namespace grpc { | |
| class CompletionQueue; | |
| namespace experimental { | |
| class ClientRpcInfo; | |
| class ServerRpcInfo; | |
| } // namespace experimental | |
| namespace internal { | |
| class CallHook; | |
| class CallOpSetInterface; | |
| /// Straightforward wrapping of the C call object | |
| class Call final { | |
| public: | |
| Call() | |
| : call_hook_(nullptr), | |
| cq_(nullptr), | |
| call_(nullptr), | |
| max_receive_message_size_(-1) {} | |
| /** call is owned by the caller */ | |
| Call(grpc_call* call, CallHook* call_hook, CompletionQueue* cq) | |
| : call_hook_(call_hook), | |
| cq_(cq), | |
| call_(call), | |
| max_receive_message_size_(-1) {} | |
| Call(grpc_call* call, CallHook* call_hook, CompletionQueue* cq, | |
| experimental::ClientRpcInfo* rpc_info) | |
| : call_hook_(call_hook), | |
| cq_(cq), | |
| call_(call), | |
| max_receive_message_size_(-1), | |
| client_rpc_info_(rpc_info) {} | |
| Call(grpc_call* call, CallHook* call_hook, CompletionQueue* cq, | |
| int max_receive_message_size, experimental::ServerRpcInfo* rpc_info) | |
| : call_hook_(call_hook), | |
| cq_(cq), | |
| call_(call), | |
| max_receive_message_size_(max_receive_message_size), | |
| server_rpc_info_(rpc_info) {} | |
| void PerformOps(CallOpSetInterface* ops) { | |
| call_hook_->PerformOpsOnCall(ops, this); | |
| } | |
| grpc_call* call() const { return call_; } | |
| CompletionQueue* cq() const { return cq_; } | |
| int max_receive_message_size() const { return max_receive_message_size_; } | |
| experimental::ClientRpcInfo* client_rpc_info() const { | |
| return client_rpc_info_; | |
| } | |
| experimental::ServerRpcInfo* server_rpc_info() const { | |
| return server_rpc_info_; | |
| } | |
| private: | |
| CallHook* call_hook_; | |
| CompletionQueue* cq_; | |
| grpc_call* call_; | |
| int max_receive_message_size_; | |
| experimental::ClientRpcInfo* client_rpc_info_ = nullptr; | |
| experimental::ServerRpcInfo* server_rpc_info_ = nullptr; | |
| }; | |
| } // namespace internal | |
| } // namespace grpc | |
| #endif // GRPCPP_IMPL_CODEGEN_CALL_H |