Skip to content
Snippets Groups Projects
Commit 73aefecd authored by murgatroid99's avatar murgatroid99
Browse files

Updated ActiveCall.php to use batch API

parent 1b027f55
No related branches found
No related tags found
No related merge requests found
...@@ -38,9 +38,7 @@ require_once realpath(dirname(__FILE__) . '/../autoload.php'); ...@@ -38,9 +38,7 @@ require_once realpath(dirname(__FILE__) . '/../autoload.php');
* Represents an active call that allows sending and recieving binary data * Represents an active call that allows sending and recieving binary data
*/ */
class ActiveCall { class ActiveCall {
private $completion_queue;
private $call; private $call;
private $flags;
private $metadata; private $metadata;
/** /**
...@@ -48,24 +46,15 @@ class ActiveCall { ...@@ -48,24 +46,15 @@ class ActiveCall {
* @param Channel $channel The channel to communicate on * @param Channel $channel The channel to communicate on
* @param string $method The method to call on the remote server * @param string $method The method to call on the remote server
* @param array $metadata Metadata to send with the call, if applicable * @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, public function __construct(Channel $channel,
$method, $method,
$metadata = array(), $metadata = array()) {
$flags = 0) {
$this->completion_queue = new CompletionQueue();
$this->call = new Call($channel, $method, Timeval::inf_future()); $this->call = new Call($channel, $method, Timeval::inf_future());
$this->call->add_metadata($metadata, 0);
$this->flags = $flags;
// Invoke the call. $event = $this->call->start_batch([OP_SEND_INITIAL_METADATA => $metadata]);
$this->call->invoke($this->completion_queue,
CLIENT_METADATA_READ, $this->metadata = $event->metadata;
FINISHED, 0);
$metadata_event = $this->completion_queue->pluck(CLIENT_METADATA_READ,
Timeval::inf_future());
$this->metadata = $metadata_event->data;
} }
/** /**
...@@ -87,8 +76,7 @@ class ActiveCall { ...@@ -87,8 +76,7 @@ class ActiveCall {
* @return The next message from the server, or null if there is none. * @return The next message from the server, or null if there is none.
*/ */
public function read() { public function read() {
$this->call->start_read(READ); $read_event = $this->call->start_batch([OP_RECV_MESSAGE => true]);
$read_event = $this->completion_queue->pluck(READ, Timeval::inf_future());
return $read_event->data; return $read_event->data;
} }
...@@ -98,16 +86,14 @@ class ActiveCall { ...@@ -98,16 +86,14 @@ class ActiveCall {
* @param ByteBuffer $data The data to write * @param ByteBuffer $data The data to write
*/ */
public function write($data) { public function write($data) {
$this->call->start_write($data, WRITE_ACCEPTED, $this->flags); $this->call->start_batch([OP_SEND_MESSAGE => $data]);
$this->completion_queue->pluck(WRITE_ACCEPTED, Timeval::inf_future());
} }
/** /**
* Indicate that no more writes will be sent. * Indicate that no more writes will be sent.
*/ */
public function writesDone() { public function writesDone() {
$this->call->writes_done(FINISH_ACCEPTED); $this->call->start_batch([OP_SEND_CLOSE_FROM_CLIENT => true]);
$this->completion_queue->pluck(FINISH_ACCEPTED, Timeval::inf_future());
} }
/** /**
...@@ -116,8 +102,7 @@ class ActiveCall { ...@@ -116,8 +102,7 @@ class ActiveCall {
* and array $metadata members * and array $metadata members
*/ */
public function getStatus() { public function getStatus() {
$status_event = $this->completion_queue->pluck(FINISHED, $status_event = $this->call->start_batch([RECV_STATUS_ON_CLIENT => true]);
Timeval::inf_future());
return $status_event->data; return $status_event->data;
} }
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment