Skip to content
Snippets Groups Projects
Commit 8f789fd4 authored by Craig Tiller's avatar Craig Tiller
Browse files

Reset on finalization so op objects can be reused

parent 3cb03ef0
No related branches found
No related tags found
No related merge requests found
...@@ -85,7 +85,7 @@ class CallOpSendInitialMetadata { ...@@ -85,7 +85,7 @@ class CallOpSendInitialMetadata {
op->data.send_initial_metadata.metadata = initial_metadata_; op->data.send_initial_metadata.metadata = initial_metadata_;
} }
void FinishOp(bool* status, int max_message_size) { void FinishOp(bool* status, int max_message_size) {
// nothing to do send_ = false;
} }
bool send_; bool send_;
...@@ -109,6 +109,7 @@ class CallOpSendMessage { ...@@ -109,6 +109,7 @@ class CallOpSendMessage {
} }
void FinishOp(bool* status, int max_message_size) { void FinishOp(bool* status, int max_message_size) {
if (own_buf_) grpc_byte_buffer_destroy(send_buf_); if (own_buf_) grpc_byte_buffer_destroy(send_buf_);
send_buf_ = nullptr;
} }
private: private:
...@@ -154,6 +155,7 @@ class CallOpRecvMessage { ...@@ -154,6 +155,7 @@ class CallOpRecvMessage {
got_message = false; got_message = false;
*status = false; *status = false;
} }
message_ = nullptr;
} }
private: private:
...@@ -198,10 +200,12 @@ class CallOpGenericRecvMessage { ...@@ -198,10 +200,12 @@ class CallOpGenericRecvMessage {
got_message = false; got_message = false;
*status = false; *status = false;
} }
deserialize_ = DeserializeFunc();
} }
private: private:
std::function<Status(grpc_byte_buffer*, int)> deserialize_; typedef std::function<Status(grpc_byte_buffer*, int)> DeserializeFunc;
DeserializeFunc deserialize_;
grpc_byte_buffer* recv_buf_; grpc_byte_buffer* recv_buf_;
}; };
...@@ -217,7 +221,7 @@ class CallOpClientSendClose { ...@@ -217,7 +221,7 @@ class CallOpClientSendClose {
ops[(*nops)++].op = GRPC_OP_SEND_CLOSE_FROM_CLIENT; ops[(*nops)++].op = GRPC_OP_SEND_CLOSE_FROM_CLIENT;
} }
void FinishOp(bool* status, int max_message_size) { void FinishOp(bool* status, int max_message_size) {
// nothing to do send_ = false;
} }
private: private:
...@@ -251,7 +255,7 @@ class CallOpServerSendStatus { ...@@ -251,7 +255,7 @@ class CallOpServerSendStatus {
} }
void FinishOp(bool* status, int max_message_size) { void FinishOp(bool* status, int max_message_size) {
// nothing to do send_status_details_ = false;
} }
private: private:
...@@ -281,7 +285,9 @@ class CallOpRecvInitialMetadata { ...@@ -281,7 +285,9 @@ class CallOpRecvInitialMetadata {
op->data.recv_initial_metadata = &recv_initial_metadata_arr_; op->data.recv_initial_metadata = &recv_initial_metadata_arr_;
} }
void FinishOp(bool* status, int max_message_size) { void FinishOp(bool* status, int max_message_size) {
if (recv_initial_metadata_ == nullptr) return;
FillMetadataMap(&recv_initial_metadata_arr_, recv_initial_metadata_); FillMetadataMap(&recv_initial_metadata_arr_, recv_initial_metadata_);
recv_initial_metadata_ = nullptr;
} }
private: private:
...@@ -312,10 +318,12 @@ class CallOpClientRecvStatus { ...@@ -312,10 +318,12 @@ class CallOpClientRecvStatus {
} }
void FinishOp(bool* status, int max_message_size) { void FinishOp(bool* status, int max_message_size) {
if (recv_status_ == nullptr) return;
FillMetadataMap(&recv_trailing_metadata_arr_, recv_trailing_metadata_); FillMetadataMap(&recv_trailing_metadata_arr_, recv_trailing_metadata_);
*recv_status_ = Status( *recv_status_ = Status(
static_cast<StatusCode>(status_code_), static_cast<StatusCode>(status_code_),
status_details_ ? grpc::string(status_details_) : grpc::string()); status_details_ ? grpc::string(status_details_) : grpc::string());
recv_status_ = nullptr;
} }
private: private:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment