| 
					
				 | 
			
			
				@@ -96,7 +96,7 @@ class ClientReader final : public ClientStreamingInterface, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     cq_.Pluck((void *)1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  virtual bool Read(R *msg) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  virtual bool Read(R *msg) override { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     CallOpBuffer buf; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     buf.AddRecvMessage(msg); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     call_.PerformOps(&buf, (void *)2); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -122,13 +122,13 @@ class ClientWriter final : public ClientStreamingInterface, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                            public WriterInterface<W> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  public: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // Blocking create a stream. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  explicit ClientWriter(ChannelInterface *channel, const RpcMethod &method, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        ClientContext *context, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        google::protobuf::Message *response) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ClientWriter(ChannelInterface *channel, const RpcMethod &method, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+               ClientContext *context, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+               google::protobuf::Message *response) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       : response_(response), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         call_(channel->CreateCall(method, context, &cq_)) {} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  virtual bool Write(const W& msg) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  virtual bool Write(const W& msg) override { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     CallOpBuffer buf; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     buf.AddSendMessage(msg); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     call_.PerformOps(&buf, (void *)2); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -165,18 +165,18 @@ class ClientReaderWriter final : public ClientStreamingInterface, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                  public ReaderInterface<R> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  public: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   // Blocking create a stream. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  explicit ClientReaderWriter(ChannelInterface *channel, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                              const RpcMethod &method, ClientContext *context) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ClientReaderWriter(ChannelInterface *channel, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                     const RpcMethod &method, ClientContext *context) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       : call_(channel->CreateCall(method, context, &cq_)) {} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  virtual bool Read(R *msg) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  virtual bool Read(R *msg) override { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     CallOpBuffer buf; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     buf.AddRecvMessage(msg); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     call_.PerformOps(&buf, (void *)2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     return cq_.Pluck((void *)2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  virtual bool Write(const W& msg) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  virtual bool Write(const W& msg) override { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     CallOpBuffer buf; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     buf.AddSendMessage(msg); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     call_.PerformOps(&buf, (void *)3); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -205,17 +205,20 @@ class ClientReaderWriter final : public ClientStreamingInterface, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 template <class R> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-class ServerReader : public ReaderInterface<R> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+class ServerReader final : public ReaderInterface<R> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  public: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  explicit ServerReader(StreamContextInterface* context) : context_(context) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    GPR_ASSERT(context_); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    context_->Start(true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  ServerReader(CompletionQueue* cq, Call* call) : cq_(cq), call_(call) {} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  virtual bool Read(R* msg) { return context_->Read(msg); } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  virtual bool Read(R* msg) override { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    CallOpBuffer buf; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    buf.AddRecvMessage(msg); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    call_->PerformOps(&buf, (void *)2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return cq_->Pluck((void *)2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  private: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  StreamContextInterface* const context_;  // not owned 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  CompletionQueue* cq_; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  Call* call_; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 template <class W> 
			 |