resolve conflict
diff --git a/include/grpc++/impl/call.h b/include/grpc++/impl/call.h
index 7aa22ee..af1c710 100644
--- a/include/grpc++/impl/call.h
+++ b/include/grpc++/impl/call.h
@@ -68,7 +68,7 @@
void AddRecvInitialMetadata(
std::multimap<grpc::string, grpc::string> *metadata);
void AddSendMessage(const google::protobuf::Message &message);
- void AddRecvMessage(google::protobuf::Message *message, bool* got_message);
+ void AddRecvMessage(google::protobuf::Message *message);
void AddClientSendClose();
void AddClientRecvStatus(std::multimap<grpc::string, grpc::string> *metadata,
Status *status);
@@ -84,6 +84,7 @@
// Called by completion queue just prior to returning from Next() or Pluck()
void FinalizeResult(void **tag, bool *status) override;
+ bool got_message = false;
private:
void *return_tag_ = nullptr;
// Send initial metadata
@@ -98,7 +99,6 @@
grpc_byte_buffer* send_message_buf_ = nullptr;
// Recv message
google::protobuf::Message* recv_message_ = nullptr;
- bool* got_message_ = nullptr;
grpc_byte_buffer* recv_message_buf_ = nullptr;
// Client send close
bool client_send_close_ = false;
diff --git a/include/grpc++/stream.h b/include/grpc++/stream.h
index 359a272..ecc28f6 100644
--- a/include/grpc++/stream.h
+++ b/include/grpc++/stream.h
@@ -119,10 +119,9 @@
buf.AddRecvInitialMetadata(&context_->recv_initial_metadata_);
context_->initial_metadata_received_ = true;
}
- bool got_message;
- buf.AddRecvMessage(msg, &got_message);
+ buf.AddRecvMessage(msg);
call_.PerformOps(&buf);
- return cq_.Pluck(&buf) && got_message;
+ return cq_.Pluck(&buf) && buf.got_message;
}
virtual Status Finish() override {
@@ -174,11 +173,10 @@
virtual Status Finish() override {
CallOpBuffer buf;
Status status;
- bool got_message;
- buf.AddRecvMessage(response_, &got_message);
+ buf.AddRecvMessage(response_);
buf.AddClientRecvStatus(&context_->trailing_metadata_, &status);
call_.PerformOps(&buf);
- GPR_ASSERT(cq_.Pluck(&buf) && got_message);
+ GPR_ASSERT(cq_.Pluck(&buf) && buf.got_message);
return status;
}
@@ -225,10 +223,9 @@
buf.AddRecvInitialMetadata(&context_->recv_initial_metadata_);
context_->initial_metadata_received_ = true;
}
- bool got_message;
- buf.AddRecvMessage(msg, &got_message);
+ buf.AddRecvMessage(msg);
call_.PerformOps(&buf);
- return cq_.Pluck(&buf) && got_message;
+ return cq_.Pluck(&buf) && buf.got_message;
}
virtual bool Write(const W& msg) override {
@@ -277,10 +274,9 @@
virtual bool Read(R* msg) override {
CallOpBuffer buf;
- bool got_message;
- buf.AddRecvMessage(msg, &got_message);
+ buf.AddRecvMessage(msg);
call_->PerformOps(&buf);
- return call_->cq()->Pluck(&buf) && got_message;
+ return call_->cq()->Pluck(&buf) && buf.got_message;
}
private:
@@ -338,10 +334,9 @@
virtual bool Read(R* msg) override {
CallOpBuffer buf;
- bool got_message;
- buf.AddRecvMessage(msg, &got_message);
+ buf.AddRecvMessage(msg);
call_->PerformOps(&buf);
- return call_->cq()->Pluck(&buf) && got_message;
+ return call_->cq()->Pluck(&buf) && buf.got_message;
}
virtual bool Write(const W& msg) override {
@@ -420,8 +415,7 @@
read_buf_.AddRecvInitialMetadata(&context_->recv_initial_metadata_);
context_->initial_metadata_received_ = true;
}
- bool ignore;
- read_buf_.AddRecvMessage(msg, &ignore);
+ read_buf_.AddRecvMessage(msg);
call_.PerformOps(&read_buf_);
}
@@ -485,8 +479,7 @@
finish_buf_.AddRecvInitialMetadata(&context_->recv_initial_metadata_);
context_->initial_metadata_received_ = true;
}
- bool ignore;
- finish_buf_.AddRecvMessage(response_, &ignore);
+ finish_buf_.AddRecvMessage(response_);
finish_buf_.AddClientRecvStatus(&context_->trailing_metadata_, status);
call_.PerformOps(&finish_buf_);
}
@@ -494,7 +487,6 @@
private:
ClientContext* context_ = nullptr;
google::protobuf::Message *const response_;
- bool got_message_;
Call call_;
CallOpBuffer init_buf_;
CallOpBuffer meta_buf_;
@@ -532,8 +524,7 @@
read_buf_.AddRecvInitialMetadata(&context_->recv_initial_metadata_);
context_->initial_metadata_received_ = true;
}
- bool ignore;
- read_buf_.AddRecvMessage(msg, &ignore);
+ read_buf_.AddRecvMessage(msg);
call_.PerformOps(&read_buf_);
}
diff --git a/src/cpp/client/client_unary_call.cc b/src/cpp/client/client_unary_call.cc
index b6bd81d..d68d7a9 100644
--- a/src/cpp/client/client_unary_call.cc
+++ b/src/cpp/client/client_unary_call.cc
@@ -53,21 +53,18 @@
buf.AddSendInitialMetadata(context);
buf.AddSendMessage(request);
buf.AddRecvInitialMetadata(&context->recv_initial_metadata_);
- bool got_message;
- buf.AddRecvMessage(result, &got_message);
+ buf.AddRecvMessage(result);
buf.AddClientSendClose();
buf.AddClientRecvStatus(&context->trailing_metadata_, &status);
call.PerformOps(&buf);
- GPR_ASSERT(cq.Pluck(&buf) && (got_message || !status.IsOk()));
+ GPR_ASSERT(cq.Pluck(&buf) && (buf.got_message || !status.IsOk()));
return status;
}
class ClientAsyncRequest final : public CallOpBuffer {
public:
- bool got_message = false;
void FinalizeResult(void** tag, bool* status) override {
CallOpBuffer::FinalizeResult(tag, status);
- *status &= got_message;
delete this;
}
};
@@ -83,7 +80,7 @@
buf->AddSendInitialMetadata(context);
buf->AddSendMessage(request);
buf->AddRecvInitialMetadata(&context->recv_initial_metadata_);
- buf->AddRecvMessage(result, &buf->got_message);
+ buf->AddRecvMessage(result);
buf->AddClientSendClose();
buf->AddClientRecvStatus(&context->trailing_metadata_, status);
call.PerformOps(buf);
diff --git a/src/cpp/common/call.cc b/src/cpp/common/call.cc
index d706ec4..fe8859d 100644
--- a/src/cpp/common/call.cc
+++ b/src/cpp/common/call.cc
@@ -57,7 +57,7 @@
}
recv_message_ = nullptr;
- got_message_ = nullptr;
+ got_message = false;
if (recv_message_buf_) {
grpc_byte_buffer_destroy(recv_message_buf_);
recv_message_buf_ = nullptr;
@@ -142,9 +142,8 @@
send_message_ = &message;
}
-void CallOpBuffer::AddRecvMessage(google::protobuf::Message *message, bool* got_message) {
+void CallOpBuffer::AddRecvMessage(google::protobuf::Message *message) {
recv_message_ = message;
- got_message_ = got_message;
}
void CallOpBuffer::AddClientSendClose() {
@@ -256,12 +255,14 @@
// Parse received message if any.
if (recv_message_) {
if (recv_message_buf_) {
- *got_message_ = true;
+ got_message = true;
*status = DeserializeProto(recv_message_buf_, recv_message_);
grpc_byte_buffer_destroy(recv_message_buf_);
recv_message_buf_ = nullptr;
} else {
- *got_message_ = false;
+ // Read failed
+ got_message = false;
+ *status = false;
}
}
// Parse received status.