aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/php/lib/Grpc/UnaryCall.php
diff options
context:
space:
mode:
authorGravatar Michael Bausor <michaelbausor@google.com>2017-08-15 10:13:06 -0700
committerGravatar Michael Bausor <michaelbausor@google.com>2017-08-15 10:13:06 -0700
commit81fd629092282d202f23317bf0529ce5dc2979e4 (patch)
tree2c189d02058dffcfb9293f7d4ee7120efc307290 /src/php/lib/Grpc/UnaryCall.php
parent023bb45a2476e1a51e8c83b98be94740593ee6a5 (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.php25
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;
+ }
}