Overview

Namespaces

  • Grpc

Classes

  • Grpc\AbstractCall
  • Grpc\BaseStub
  • Grpc\BidiStreamingCall
  • Grpc\ClientStreamingCall
  • Grpc\ServerStreamingCall
  • Grpc\UnaryCall
  • Overview
  • Namespace
  • Class
 1: <?php
 2: /*
 3:  *
 4:  * Copyright 2015, Google Inc.
 5:  * All rights reserved.
 6:  *
 7:  * Redistribution and use in source and binary forms, with or without
 8:  * modification, are permitted provided that the following conditions are
 9:  * met:
10:  *
11:  *     * Redistributions of source code must retain the above copyright
12:  * notice, this list of conditions and the following disclaimer.
13:  *     * Redistributions in binary form must reproduce the above
14:  * copyright notice, this list of conditions and the following disclaimer
15:  * in the documentation and/or other materials provided with the
16:  * distribution.
17:  *     * Neither the name of Google Inc. nor the names of its
18:  * contributors may be used to endorse or promote products derived from
19:  * this software without specific prior written permission.
20:  *
21:  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22:  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23:  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
24:  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
25:  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
26:  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
27:  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
28:  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
29:  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
30:  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
31:  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32:  *
33:  */
34: 
35: namespace Grpc;
36: 
37: /**
38:  * Represents an active call that sends a single message and then gets a
39:  * single response.
40:  */
41: class UnaryCall extends AbstractCall
42: {
43:     /**
44:      * Start the call.
45:      *
46:      * @param mixed $data     The data to send
47:      * @param array $metadata Metadata to send with the call, if applicable
48:      *                        (optional)
49:      * @param array $options  An array of options, possible keys:
50:      *                        'flags' => a number (optional)
51:      */
52:     public function start($data, array $metadata = [], array $options = [])
53:     {
54:         $message_array = ['message' => $this->_serializeMessage($data)];
55:         if (isset($options['flags'])) {
56:             $message_array['flags'] = $options['flags'];
57:         }
58:         $event = $this->call->startBatch([
59:             OP_SEND_INITIAL_METADATA => $metadata,
60:             OP_RECV_INITIAL_METADATA => true,
61:             OP_SEND_MESSAGE => $message_array,
62:             OP_SEND_CLOSE_FROM_CLIENT => true,
63:         ]);
64:         $this->metadata = $event->metadata;
65:     }
66: 
67:     /**
68:      * Wait for the server to respond with data and a status.
69:      *
70:      * @return array [response data, status]
71:      */
72:     public function wait()
73:     {
74:         $event = $this->call->startBatch([
75:             OP_RECV_MESSAGE => true,
76:             OP_RECV_STATUS_ON_CLIENT => true,
77:         ]);
78: 
79:         $status = $event->status;
80:         $this->trailing_metadata = $status->metadata;
81: 
82:         return [$this->_deserializeResponse($event->message), $status];
83:     }
84: }
85: 
API documentation generated by ApiGen