aboutsummaryrefslogtreecommitdiffhomepage
path: root/include/grpc++/impl
diff options
context:
space:
mode:
authorGravatar Craig Tiller <ctiller@google.com>2015-02-11 13:34:48 -0800
committerGravatar Craig Tiller <ctiller@google.com>2015-02-11 13:34:48 -0800
commitbb5227fc39fb44ae27d33d934470acd81f2ae57f (patch)
tree22c6db8f37aec542414273e30916da86cc25986b /include/grpc++/impl
parent7c2f3f7af1ebf6ca88780271e0d6f0f8147c3a33 (diff)
Allow server to hook calls also, fix crash
Diffstat (limited to 'include/grpc++/impl')
-rw-r--r--include/grpc++/impl/call.h13
1 files changed, 10 insertions, 3 deletions
diff --git a/include/grpc++/impl/call.h b/include/grpc++/impl/call.h
index d0cb9024ba..bc1a3d847d 100644
--- a/include/grpc++/impl/call.h
+++ b/include/grpc++/impl/call.h
@@ -52,7 +52,7 @@ struct grpc_op;
namespace grpc {
-class ChannelInterface;
+class Call;
class CallOpBuffer final : public CompletionQueueTag {
public:
@@ -103,10 +103,17 @@ class CCallDeleter {
void operator()(grpc_call *c);
};
+// Channel and Server implement this to allow them to hook performing ops
+class CallHook {
+ public:
+ virtual ~CallHook() {}
+ virtual void PerformOpsOnCall(CallOpBuffer *ops, Call *call) = 0;
+};
+
// Straightforward wrapping of the C call object
class Call final {
public:
- Call(grpc_call *call, ChannelInterface *channel, CompletionQueue *cq);
+ Call(grpc_call *call, CallHook *call_hook_, CompletionQueue *cq);
void PerformOps(CallOpBuffer *buffer);
@@ -114,7 +121,7 @@ class Call final {
CompletionQueue *cq() { return cq_; }
private:
- ChannelInterface *channel_;
+ CallHook *call_hook_;
CompletionQueue *cq_;
std::unique_ptr<grpc_call, CCallDeleter> call_;
};