diff --git a/include/grpc++/impl/call.h b/include/grpc++/impl/call.h index 5922e2581a98973e5bb9f53acfeb634bc27d86fb..9ac92a00dd9f4c3ff0078fd8217e7fcc016437ab 100644 --- a/include/grpc++/impl/call.h +++ b/include/grpc++/impl/call.h @@ -112,11 +112,6 @@ class CallOpBuffer final : public CompletionQueueTag { grpc_metadata *trailing_metadata_ = nullptr; }; -class CCallDeleter { - public: - void operator()(grpc_call *c); -}; - // Channel and Server implement this to allow them to hook performing ops class CallHook { public: @@ -127,17 +122,18 @@ class CallHook { // Straightforward wrapping of the C call object class Call final { public: + /* call is owned by the caller */ Call(grpc_call *call, CallHook *call_hook_, CompletionQueue *cq); void PerformOps(CallOpBuffer *buffer); - grpc_call *call() { return call_.get(); } + grpc_call *call() { return call_; } CompletionQueue *cq() { return cq_; } private: CallHook *call_hook_; CompletionQueue *cq_; - std::unique_ptr<grpc_call, CCallDeleter> call_; + grpc_call* call_; }; } // namespace grpc diff --git a/src/cpp/common/call.cc b/src/cpp/common/call.cc index 61488553374d535c68f2030e4cc4f503639e35bf..84791aa0a4646acb98258a109a8f03a6eb212b9b 100644 --- a/src/cpp/common/call.cc +++ b/src/cpp/common/call.cc @@ -243,10 +243,6 @@ void CallOpBuffer::FinalizeResult(void **tag, bool *status) { } } -void CCallDeleter::operator()(grpc_call* c) { - grpc_call_destroy(c); -} - Call::Call(grpc_call* call, CallHook *call_hook, CompletionQueue* cq) : call_hook_(call_hook), cq_(cq), call_(call) {} diff --git a/src/cpp/server/server.cc b/src/cpp/server/server.cc index 4392739367593488d28851e23435537a7981cc7e..2ee858154861c92ce679de89b0be7ebdb89e5ed1 100644 --- a/src/cpp/server/server.cc +++ b/src/cpp/server/server.cc @@ -157,6 +157,10 @@ class Server::MethodRequestData final : public CompletionQueueTag { mrd->request_metadata_.count = 0; } + ~CallData() { + grpc_call_destroy(call_.call()); + } + void Run() { std::unique_ptr<google::protobuf::Message> req; std::unique_ptr<google::protobuf::Message> res;