From 73aefecd6f3e9d2148b50cdadbee48e2c1ccd64b Mon Sep 17 00:00:00 2001
From: murgatroid99 <mlumish@google.com>
Date: Wed, 11 Mar 2015 16:36:14 -0700
Subject: [PATCH] Updated ActiveCall.php to use batch API

---
 src/php/lib/Grpc/ActiveCall.php | 31 ++++++++-----------------------
 1 file changed, 8 insertions(+), 23 deletions(-)

diff --git a/src/php/lib/Grpc/ActiveCall.php b/src/php/lib/Grpc/ActiveCall.php
index f0d0d55582..af4dca50d7 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;
   }
 }
-- 
GitLab