aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/php/lib/Grpc/ServerStreamingSurfaceActiveCall.php
diff options
context:
space:
mode:
Diffstat (limited to 'src/php/lib/Grpc/ServerStreamingSurfaceActiveCall.php')
-rwxr-xr-xsrc/php/lib/Grpc/ServerStreamingSurfaceActiveCall.php42
1 files changed, 42 insertions, 0 deletions
diff --git a/src/php/lib/Grpc/ServerStreamingSurfaceActiveCall.php b/src/php/lib/Grpc/ServerStreamingSurfaceActiveCall.php
new file mode 100755
index 0000000000..082f995d8a
--- /dev/null
+++ b/src/php/lib/Grpc/ServerStreamingSurfaceActiveCall.php
@@ -0,0 +1,42 @@
+<?php
+namespace Grpc;
+
+require_once realpath(dirname(__FILE__) . '/../autoload.php');
+
+/**
+ * Represents an active call that sends a single message and then gets a stream
+ * of reponses
+ */
+class ServerStreamingSurfaceActiveCall extends AbstractSurfaceActiveCall {
+ /**
+ * Create a new simple (single request/single response) active call.
+ * @param Channel $channel The channel to communicate on
+ * @param string $method The method to call on the remote server
+ * @param callable $deserialize The function to deserialize a value
+ * @param $arg The argument to send
+ * @param array $metadata Metadata to send with the call, if applicable
+ */
+ public function __construct(Channel $channel,
+ $method,
+ callable $deserialize,
+ $arg,
+ $metadata = array()) {
+ parent::__construct($channel, $method, $deserialize, $metadata,
+ \Grpc\WRITE_BUFFER_HINT);
+ $this->_write($arg);
+ $this->_writesDone();
+ }
+
+ /**
+ * @return An iterator of response values
+ */
+ public function responses() {
+ while(($response = $this->_read()) != null) {
+ yield $response;
+ }
+ }
+
+ public function getStatus() {
+ return $this->_getStatus();
+ }
+}