diff options
author | Michael Bausor <michaelbausor@google.com> | 2017-08-15 10:13:06 -0700 |
---|---|---|
committer | Michael Bausor <michaelbausor@google.com> | 2017-08-15 10:13:06 -0700 |
commit | 81fd629092282d202f23317bf0529ce5dc2979e4 (patch) | |
tree | 2c189d02058dffcfb9293f7d4ee7120efc307290 /src/php/lib/Grpc/UnaryCall.php | |
parent | 023bb45a2476e1a51e8c83b98be94740593ee6a5 (diff) |
Move OP_RECV_INITIAL_METADATA out of start() methods
Moves the OP_RECV_INITIAL_METADATA out of the start() methods for
UnaryCall and ServerStreamingCall, and adds a check so that the
getMetadata methods for those objects will always contain the
metadata.
Diffstat (limited to 'src/php/lib/Grpc/UnaryCall.php')
-rw-r--r-- | src/php/lib/Grpc/UnaryCall.php | 25 |
1 files changed, 21 insertions, 4 deletions
diff --git a/src/php/lib/Grpc/UnaryCall.php b/src/php/lib/Grpc/UnaryCall.php index dd55d02165..1291346363 100644 --- a/src/php/lib/Grpc/UnaryCall.php +++ b/src/php/lib/Grpc/UnaryCall.php @@ -42,7 +42,6 @@ class UnaryCall extends AbstractCall } $event = $this->call->startBatch([ OP_SEND_INITIAL_METADATA => $metadata, - OP_RECV_INITIAL_METADATA => true, OP_SEND_MESSAGE => $message_array, OP_SEND_CLOSE_FROM_CLIENT => true, ]); @@ -56,14 +55,32 @@ class UnaryCall extends AbstractCall */ public function wait() { - $event = $this->call->startBatch([ + $batch = [ OP_RECV_MESSAGE => true, OP_RECV_STATUS_ON_CLIENT => true, - ]); - + ]; + if ($this->metadata === null) { + $batch[OP_RECV_INITIAL_METADATA] = true; + } + $event = $this->call->startBatch($batch); + if ($this->metadata === null) { + $this->metadata = $event->metadata; + } $status = $event->status; $this->trailing_metadata = $status->metadata; return [$this->_deserializeResponse($event->message), $status]; } + + /** + * @return mixed The metadata sent by the server + */ + public function getMetadata() + { + if ($this->metadata === null) { + $event = $this->call->startBatch([OP_RECV_INITIAL_METADATA => true]); + $this->metadata = $event->metadata; + } + return $this->metadata; + } } |