|
|
|
@ -60,7 +60,8 @@ CallOpBuffer::CallOpBuffer() |
|
|
|
|
status_code_(GRPC_STATUS_OK), |
|
|
|
|
status_details_(nullptr), |
|
|
|
|
status_details_capacity_(0), |
|
|
|
|
send_status_(nullptr), |
|
|
|
|
send_status_available_(false), |
|
|
|
|
send_status_code_(GRPC_STATUS_OK), |
|
|
|
|
trailing_metadata_count_(0), |
|
|
|
|
trailing_metadata_(nullptr), |
|
|
|
|
cancelled_buf_(0), |
|
|
|
@ -104,7 +105,9 @@ void CallOpBuffer::Reset(void* next_return_tag) { |
|
|
|
|
|
|
|
|
|
status_code_ = GRPC_STATUS_OK; |
|
|
|
|
|
|
|
|
|
send_status_ = nullptr; |
|
|
|
|
send_status_available_ = false; |
|
|
|
|
send_status_code_ = GRPC_STATUS_OK; |
|
|
|
|
send_status_details_.clear(); |
|
|
|
|
trailing_metadata_count_ = 0; |
|
|
|
|
trailing_metadata_ = nullptr; |
|
|
|
|
|
|
|
|
@ -208,7 +211,9 @@ void CallOpBuffer::AddServerSendStatus( |
|
|
|
|
} else { |
|
|
|
|
trailing_metadata_count_ = 0; |
|
|
|
|
} |
|
|
|
|
send_status_ = &status; |
|
|
|
|
send_status_available_ = true; |
|
|
|
|
send_status_code_ = static_cast<grpc_status_code>(status.code()); |
|
|
|
|
send_status_details_ = status.details(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void CallOpBuffer::FillOps(grpc_op* ops, size_t* nops) { |
|
|
|
@ -257,16 +262,15 @@ void CallOpBuffer::FillOps(grpc_op* ops, size_t* nops) { |
|
|
|
|
&status_details_capacity_; |
|
|
|
|
(*nops)++; |
|
|
|
|
} |
|
|
|
|
if (send_status_) { |
|
|
|
|
if (send_status_available_) { |
|
|
|
|
ops[*nops].op = GRPC_OP_SEND_STATUS_FROM_SERVER; |
|
|
|
|
ops[*nops].data.send_status_from_server.trailing_metadata_count = |
|
|
|
|
trailing_metadata_count_; |
|
|
|
|
ops[*nops].data.send_status_from_server.trailing_metadata = |
|
|
|
|
trailing_metadata_; |
|
|
|
|
ops[*nops].data.send_status_from_server.status = |
|
|
|
|
static_cast<grpc_status_code>(send_status_->code()); |
|
|
|
|
ops[*nops].data.send_status_from_server.status = send_status_code_; |
|
|
|
|
ops[*nops].data.send_status_from_server.status_details = |
|
|
|
|
send_status_->details().c_str(); |
|
|
|
|
send_status_details_.empty() ? nullptr : send_status_details_.c_str(); |
|
|
|
|
(*nops)++; |
|
|
|
|
} |
|
|
|
|
if (recv_closed_) { |
|
|
|
|