diff --git a/src/php/lib/Grpc/ActiveCall.php b/src/php/lib/Grpc/ActiveCall.php index f0d0d555825..af4dca50d76 100755 --- a/src/php/lib/Grpc/ActiveCall.php +++ b/src/php/lib/Grpc/ActiveCall.php @@ -38,9 +38,7 @@ require_once realpath(dirname(__FILE__) . '/../autoload.php'); * Represents an active call that allows sending and recieving binary data */ class ActiveCall { - private $completion_queue; private $call; - private $flags; private $metadata; /** @@ -48,24 +46,15 @@ class ActiveCall { * @param Channel $channel The channel to communicate on * @param string $method The method to call on the remote server * @param array $metadata Metadata to send with the call, if applicable - * @param long $flags Write flags to use with this call */ public function __construct(Channel $channel, $method, - $metadata = array(), - $flags = 0) { - $this->completion_queue = new CompletionQueue(); + $metadata = array()) { $this->call = new Call($channel, $method, Timeval::inf_future()); - $this->call->add_metadata($metadata, 0); - $this->flags = $flags; - // Invoke the call. - $this->call->invoke($this->completion_queue, - CLIENT_METADATA_READ, - FINISHED, 0); - $metadata_event = $this->completion_queue->pluck(CLIENT_METADATA_READ, - Timeval::inf_future()); - $this->metadata = $metadata_event->data; + $event = $this->call->start_batch([OP_SEND_INITIAL_METADATA => $metadata]); + + $this->metadata = $event->metadata; } /** @@ -87,8 +76,7 @@ class ActiveCall { * @return The next message from the server, or null if there is none. */ public function read() { - $this->call->start_read(READ); - $read_event = $this->completion_queue->pluck(READ, Timeval::inf_future()); + $read_event = $this->call->start_batch([OP_RECV_MESSAGE => true]); return $read_event->data; } @@ -98,16 +86,14 @@ class ActiveCall { * @param ByteBuffer $data The data to write */ public function write($data) { - $this->call->start_write($data, WRITE_ACCEPTED, $this->flags); - $this->completion_queue->pluck(WRITE_ACCEPTED, Timeval::inf_future()); + $this->call->start_batch([OP_SEND_MESSAGE => $data]); } /** * Indicate that no more writes will be sent. */ public function writesDone() { - $this->call->writes_done(FINISH_ACCEPTED); - $this->completion_queue->pluck(FINISH_ACCEPTED, Timeval::inf_future()); + $this->call->start_batch([OP_SEND_CLOSE_FROM_CLIENT => true]); } /** @@ -116,8 +102,7 @@ class ActiveCall { * and array $metadata members */ public function getStatus() { - $status_event = $this->completion_queue->pluck(FINISHED, - Timeval::inf_future()); + $status_event = $this->call->start_batch([RECV_STATUS_ON_CLIENT => true]); return $status_event->data; } }