| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208 | <!DOCTYPE html><html><head>	<meta charset="utf-8">	<meta name="robots" content="noindex">	<title>File BidiStreamingCall.php</title>	<link rel="stylesheet" href="resources/style.css?e99947befd7bf673c6b43ff75e9e0f170c88a60e"></head><body><div id="left">	<div id="menu">		<a href="index.html" title="Overview"><span>Overview</span></a>		<div id="groups">				<h3>Namespaces</h3>			<ul>				<li>					<a href="namespace-Grpc.html">						Grpc					</a>						</li>			</ul>		</div>		<hr>		<div id="elements">			<h3>Classes</h3>			<ul>				<li><a href="class-Grpc.AbstractCall.html">Grpc\AbstractCall</a></li>				<li><a href="class-Grpc.BaseStub.html">Grpc\BaseStub</a></li>				<li><a href="class-Grpc.BidiStreamingCall.html">Grpc\BidiStreamingCall</a></li>				<li><a href="class-Grpc.ClientStreamingCall.html">Grpc\ClientStreamingCall</a></li>				<li><a href="class-Grpc.ServerStreamingCall.html">Grpc\ServerStreamingCall</a></li>				<li><a href="class-Grpc.UnaryCall.html">Grpc\UnaryCall</a></li>			</ul>		</div>	</div></div><div id="splitter"></div><div id="right"><div id="rightInner">	<form id="search">		<input type="hidden" name="cx" value="">		<input type="hidden" name="ie" value="UTF-8">		<input type="text" name="q" class="text" placeholder="Search">	</form>	<div id="navigation">		<ul>			<li>				<a href="index.html" title="Overview"><span>Overview</span></a>			</li>			<li><span>Namespace</span>			</li>			<li><span>Class</span>			</li>		</ul>		<ul>		</ul>		<ul>		</ul>	</div><pre><code><span id="1" class="l"><a href="#1">  1: </a><span class="xlang"><?php</span></span><span id="2" class="l"><a href="#2">  2: </a><span class="php-comment">/*</span></span><span id="3" class="l"><a href="#3">  3: </a><span class="php-comment"> *</span></span><span id="4" class="l"><a href="#4">  4: </a><span class="php-comment"> * Copyright 2015, Google Inc.</span></span><span id="5" class="l"><a href="#5">  5: </a><span class="php-comment"> * All rights reserved.</span></span><span id="6" class="l"><a href="#6">  6: </a><span class="php-comment"> *</span></span><span id="7" class="l"><a href="#7">  7: </a><span class="php-comment"> * Redistribution and use in source and binary forms, with or without</span></span><span id="8" class="l"><a href="#8">  8: </a><span class="php-comment"> * modification, are permitted provided that the following conditions are</span></span><span id="9" class="l"><a href="#9">  9: </a><span class="php-comment"> * met:</span></span><span id="10" class="l"><a href="#10"> 10: </a><span class="php-comment"> *</span></span><span id="11" class="l"><a href="#11"> 11: </a><span class="php-comment"> *     * Redistributions of source code must retain the above copyright</span></span><span id="12" class="l"><a href="#12"> 12: </a><span class="php-comment"> * notice, this list of conditions and the following disclaimer.</span></span><span id="13" class="l"><a href="#13"> 13: </a><span class="php-comment"> *     * Redistributions in binary form must reproduce the above</span></span><span id="14" class="l"><a href="#14"> 14: </a><span class="php-comment"> * copyright notice, this list of conditions and the following disclaimer</span></span><span id="15" class="l"><a href="#15"> 15: </a><span class="php-comment"> * in the documentation and/or other materials provided with the</span></span><span id="16" class="l"><a href="#16"> 16: </a><span class="php-comment"> * distribution.</span></span><span id="17" class="l"><a href="#17"> 17: </a><span class="php-comment"> *     * Neither the name of Google Inc. nor the names of its</span></span><span id="18" class="l"><a href="#18"> 18: </a><span class="php-comment"> * contributors may be used to endorse or promote products derived from</span></span><span id="19" class="l"><a href="#19"> 19: </a><span class="php-comment"> * this software without specific prior written permission.</span></span><span id="20" class="l"><a href="#20"> 20: </a><span class="php-comment"> *</span></span><span id="21" class="l"><a href="#21"> 21: </a><span class="php-comment"> * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS</span></span><span id="22" class="l"><a href="#22"> 22: </a><span class="php-comment"> * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT</span></span><span id="23" class="l"><a href="#23"> 23: </a><span class="php-comment"> * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR</span></span><span id="24" class="l"><a href="#24"> 24: </a><span class="php-comment"> * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT</span></span><span id="25" class="l"><a href="#25"> 25: </a><span class="php-comment"> * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,</span></span><span id="26" class="l"><a href="#26"> 26: </a><span class="php-comment"> * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT</span></span><span id="27" class="l"><a href="#27"> 27: </a><span class="php-comment"> * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,</span></span><span id="28" class="l"><a href="#28"> 28: </a><span class="php-comment"> * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY</span></span><span id="29" class="l"><a href="#29"> 29: </a><span class="php-comment"> * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT</span></span><span id="30" class="l"><a href="#30"> 30: </a><span class="php-comment"> * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE</span></span><span id="31" class="l"><a href="#31"> 31: </a><span class="php-comment"> * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</span></span><span id="32" class="l"><a href="#32"> 32: </a><span class="php-comment"> *</span></span><span id="33" class="l"><a href="#33"> 33: </a><span class="php-comment"> */</span></span><span id="34" class="l"><a href="#34"> 34: </a></span><span id="35" class="l"><a href="#35"> 35: </a><span class="php-keyword1">namespace</span> Grpc;</span><span id="36" class="l"><a href="#36"> 36: </a></span><span id="37" class="l"><a href="#37"> 37: </a><span class="php-comment">/**</span></span><span id="38" class="l"><a href="#38"> 38: </a><span class="php-comment"> * Represents an active call that allows for sending and recieving messages</span></span><span id="39" class="l"><a href="#39"> 39: </a><span class="php-comment"> * in streams in any order.</span></span><span id="40" class="l"><a href="#40"> 40: </a><span class="php-comment"> */</span></span><span id="41" class="l"><a href="#41"> 41: </a><span class="php-keyword1">class</span> BidiStreamingCall <span class="php-keyword1">extends</span> AbstractCall</span><span id="42" class="l"><a href="#42"> 42: </a>{</span><span id="43" class="l"><a href="#43"> 43: </a>    <span class="php-comment">/**</span></span><span id="44" class="l"><a href="#44"> 44: </a><span class="php-comment">     * Start the call.</span></span><span id="45" class="l"><a href="#45"> 45: </a><span class="php-comment">     *</span></span><span id="46" class="l"><a href="#46"> 46: </a><span class="php-comment">     * @param array $metadata Metadata to send with the call, if applicable</span></span><span id="47" class="l"><a href="#47"> 47: </a><span class="php-comment">     *                        (optional)</span></span><span id="48" class="l"><a href="#48"> 48: </a><span class="php-comment">     */</span></span><span id="49" class="l"><a href="#49"> 49: </a>    <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> start(<span class="php-keyword1">array</span> <span class="php-var">$metadata</span> = [])</span><span id="50" class="l"><a href="#50"> 50: </a>    {</span><span id="51" class="l"><a href="#51"> 51: </a>        <span class="php-var">$this</span>->call->startBatch([</span><span id="52" class="l"><a href="#52"> 52: </a>            OP_SEND_INITIAL_METADATA => <span class="php-var">$metadata</span>,</span><span id="53" class="l"><a href="#53"> 53: </a>        ]);</span><span id="54" class="l"><a href="#54"> 54: </a>    }</span><span id="55" class="l"><a href="#55"> 55: </a></span><span id="56" class="l"><a href="#56"> 56: </a>    <span class="php-comment">/**</span></span><span id="57" class="l"><a href="#57"> 57: </a><span class="php-comment">     * Reads the next value from the server.</span></span><span id="58" class="l"><a href="#58"> 58: </a><span class="php-comment">     *</span></span><span id="59" class="l"><a href="#59"> 59: </a><span class="php-comment">     * @return mixed The next value from the server, or null if there is none</span></span><span id="60" class="l"><a href="#60"> 60: </a><span class="php-comment">     */</span></span><span id="61" class="l"><a href="#61"> 61: </a>    <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> read()</span><span id="62" class="l"><a href="#62"> 62: </a>    {</span><span id="63" class="l"><a href="#63"> 63: </a>        <span class="php-var">$batch</span> = [OP_RECV_MESSAGE => <span class="php-keyword1">true</span>];</span><span id="64" class="l"><a href="#64"> 64: </a>        <span class="php-keyword1">if</span> (<span class="php-var">$this</span>->metadata === <span class="php-keyword1">null</span>) {</span><span id="65" class="l"><a href="#65"> 65: </a>            <span class="php-var">$batch</span>[OP_RECV_INITIAL_METADATA] = <span class="php-keyword1">true</span>;</span><span id="66" class="l"><a href="#66"> 66: </a>        }</span><span id="67" class="l"><a href="#67"> 67: </a>        <span class="php-var">$read_event</span> = <span class="php-var">$this</span>->call->startBatch(<span class="php-var">$batch</span>);</span><span id="68" class="l"><a href="#68"> 68: </a>        <span class="php-keyword1">if</span> (<span class="php-var">$this</span>->metadata === <span class="php-keyword1">null</span>) {</span><span id="69" class="l"><a href="#69"> 69: </a>            <span class="php-var">$this</span>->metadata = <span class="php-var">$read_event</span>->metadata;</span><span id="70" class="l"><a href="#70"> 70: </a>        }</span><span id="71" class="l"><a href="#71"> 71: </a></span><span id="72" class="l"><a href="#72"> 72: </a>        <span class="php-keyword1">return</span> <span class="php-var">$this</span>->_deserializeResponse(<span class="php-var">$read_event</span>->message);</span><span id="73" class="l"><a href="#73"> 73: </a>    }</span><span id="74" class="l"><a href="#74"> 74: </a></span><span id="75" class="l"><a href="#75"> 75: </a>    <span class="php-comment">/**</span></span><span id="76" class="l"><a href="#76"> 76: </a><span class="php-comment">     * Write a single message to the server. This cannot be called after</span></span><span id="77" class="l"><a href="#77"> 77: </a><span class="php-comment">     * writesDone is called.</span></span><span id="78" class="l"><a href="#78"> 78: </a><span class="php-comment">     *</span></span><span id="79" class="l"><a href="#79"> 79: </a><span class="php-comment">     * @param ByteBuffer $data    The data to write</span></span><span id="80" class="l"><a href="#80"> 80: </a><span class="php-comment">     * @param array      $options An array of options, possible keys:</span></span><span id="81" class="l"><a href="#81"> 81: </a><span class="php-comment">     *                            'flags' => a number (optional)</span></span><span id="82" class="l"><a href="#82"> 82: </a><span class="php-comment">     */</span></span><span id="83" class="l"><a href="#83"> 83: </a>    <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> write(<span class="php-var">$data</span>, <span class="php-keyword1">array</span> <span class="php-var">$options</span> = [])</span><span id="84" class="l"><a href="#84"> 84: </a>    {</span><span id="85" class="l"><a href="#85"> 85: </a>        <span class="php-var">$message_array</span> = [<span class="php-quote">'message'</span> => <span class="php-var">$this</span>->_serializeMessage(<span class="php-var">$data</span>)];</span><span id="86" class="l"><a href="#86"> 86: </a>        <span class="php-keyword1">if</span> (<span class="php-keyword2">array_key_exists</span>(<span class="php-quote">'flags'</span>, <span class="php-var">$options</span>)) {</span><span id="87" class="l"><a href="#87"> 87: </a>            <span class="php-var">$message_array</span>[<span class="php-quote">'flags'</span>] = <span class="php-var">$options</span>[<span class="php-quote">'flags'</span>];</span><span id="88" class="l"><a href="#88"> 88: </a>        }</span><span id="89" class="l"><a href="#89"> 89: </a>        <span class="php-var">$this</span>->call->startBatch([</span><span id="90" class="l"><a href="#90"> 90: </a>            OP_SEND_MESSAGE => <span class="php-var">$message_array</span>,</span><span id="91" class="l"><a href="#91"> 91: </a>        ]);</span><span id="92" class="l"><a href="#92"> 92: </a>    }</span><span id="93" class="l"><a href="#93"> 93: </a></span><span id="94" class="l"><a href="#94"> 94: </a>    <span class="php-comment">/**</span></span><span id="95" class="l"><a href="#95"> 95: </a><span class="php-comment">     * Indicate that no more writes will be sent.</span></span><span id="96" class="l"><a href="#96"> 96: </a><span class="php-comment">     */</span></span><span id="97" class="l"><a href="#97"> 97: </a>    <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> writesDone()</span><span id="98" class="l"><a href="#98"> 98: </a>    {</span><span id="99" class="l"><a href="#99"> 99: </a>        <span class="php-var">$this</span>->call->startBatch([</span><span id="100" class="l"><a href="#100">100: </a>            OP_SEND_CLOSE_FROM_CLIENT => <span class="php-keyword1">true</span>,</span><span id="101" class="l"><a href="#101">101: </a>        ]);</span><span id="102" class="l"><a href="#102">102: </a>    }</span><span id="103" class="l"><a href="#103">103: </a></span><span id="104" class="l"><a href="#104">104: </a>    <span class="php-comment">/**</span></span><span id="105" class="l"><a href="#105">105: </a><span class="php-comment">     * Wait for the server to send the status, and return it.</span></span><span id="106" class="l"><a href="#106">106: </a><span class="php-comment">     *</span></span><span id="107" class="l"><a href="#107">107: </a><span class="php-comment">     * @return \stdClass The status object, with integer $code, string</span></span><span id="108" class="l"><a href="#108">108: </a><span class="php-comment">     *                   $details, and array $metadata members</span></span><span id="109" class="l"><a href="#109">109: </a><span class="php-comment">     */</span></span><span id="110" class="l"><a href="#110">110: </a>    <span class="php-keyword1">public</span> <span class="php-keyword1">function</span> getStatus()</span><span id="111" class="l"><a href="#111">111: </a>    {</span><span id="112" class="l"><a href="#112">112: </a>        <span class="php-var">$status_event</span> = <span class="php-var">$this</span>->call->startBatch([</span><span id="113" class="l"><a href="#113">113: </a>            OP_RECV_STATUS_ON_CLIENT => <span class="php-keyword1">true</span>,</span><span id="114" class="l"><a href="#114">114: </a>        ]);</span><span id="115" class="l"><a href="#115">115: </a></span><span id="116" class="l"><a href="#116">116: </a>        <span class="php-var">$this</span>->trailing_metadata = <span class="php-var">$status_event</span>->status->metadata;</span><span id="117" class="l"><a href="#117">117: </a></span><span id="118" class="l"><a href="#118">118: </a>        <span class="php-keyword1">return</span> <span class="php-var">$status_event</span>->status;</span><span id="119" class="l"><a href="#119">119: </a>    }</span><span id="120" class="l"><a href="#120">120: </a>}</span><span id="121" class="l"><a href="#121">121: </a></span></code></pre>	<div id="footer">		 API documentation generated by <a href="http://apigen.org">ApiGen</a>	</div></div></div><script src="resources/combined.js?cd021bc814832c24a7cec5319ea03335bfba1caf"></script><script src="elementlist.js?cf93b70b1d193f97eb89fd1473f4f7ebb98e18eb"></script></body></html>
 |