Home | History | Annotate | Download | only in c
      1 {{+bindTo:partials.standard_nacl_api}}
      2 <h1>PPB_TCPSocket Struct Reference</h1>
      3 <div id="doxygen-ref">
      4 {{- dummy div to appease doxygen -}}
      5   <div>
      6 <!-- Generated by Doxygen 1.7.6.1 -->
      7 
      8 
      9 </div>
     10 <!--header-->
     11 <div class="contents">
     12 <!-- doxytag: class="PPB_TCPSocket" --><h2>
     13 Data Fields</h2><table class="memberdecls">
     14 
     15 <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___typedefs.html#gafdc3895ee80f4750d0d95ae1b677e9b7">PP_Resource</a>(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_p_p_b___t_c_p_socket__1__1.html#a615cb349fbe99e25ae09078091c87b43">Create</a> )(<a class="el" href="group___typedefs.html#ga89b662403e6a687bb914b80114c0d19d">PP_Instance</a> instance)</td></tr>
     16 <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___enums.html#ga4f272d99be14aacafe08dfd4ef830918">PP_Bool</a>(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_p_p_b___t_c_p_socket__1__1.html#afe32ae060181370e12c93c206964a58f">IsTCPSocket</a> )(<a class="el" href="group___typedefs.html#gafdc3895ee80f4750d0d95ae1b677e9b7">PP_Resource</a> resource)</td></tr>
     17 <tr><td class="memItemLeft" align="right" valign="top">int32_t(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_p_p_b___t_c_p_socket__1__1.html#aae9a2f9ced445ca28a21721a0df5c567">Bind</a> )(<a class="el" href="group___typedefs.html#gafdc3895ee80f4750d0d95ae1b677e9b7">PP_Resource</a> tcp_socket, <a class="el" href="group___typedefs.html#gafdc3895ee80f4750d0d95ae1b677e9b7">PP_Resource</a> addr, struct <a class="el" href="struct_p_p___completion_callback.html">PP_CompletionCallback</a> callback)</td></tr>
     18 <tr><td class="memItemLeft" align="right" valign="top">int32_t(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_p_p_b___t_c_p_socket__1__1.html#a1d12313b4681e48fa6f9b789d26414cb">Connect</a> )(<a class="el" href="group___typedefs.html#gafdc3895ee80f4750d0d95ae1b677e9b7">PP_Resource</a> tcp_socket, <a class="el" href="group___typedefs.html#gafdc3895ee80f4750d0d95ae1b677e9b7">PP_Resource</a> addr, struct <a class="el" href="struct_p_p___completion_callback.html">PP_CompletionCallback</a> callback)</td></tr>
     19 <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___typedefs.html#gafdc3895ee80f4750d0d95ae1b677e9b7">PP_Resource</a>(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_p_p_b___t_c_p_socket__1__1.html#ab64edd222b040500767f5c9182358b68">GetLocalAddress</a> )(<a class="el" href="group___typedefs.html#gafdc3895ee80f4750d0d95ae1b677e9b7">PP_Resource</a> tcp_socket)</td></tr>
     20 <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___typedefs.html#gafdc3895ee80f4750d0d95ae1b677e9b7">PP_Resource</a>(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_p_p_b___t_c_p_socket__1__1.html#af28b600fcdf657ca31dd2e9218a774e1">GetRemoteAddress</a> )(<a class="el" href="group___typedefs.html#gafdc3895ee80f4750d0d95ae1b677e9b7">PP_Resource</a> tcp_socket)</td></tr>
     21 <tr><td class="memItemLeft" align="right" valign="top">int32_t(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_p_p_b___t_c_p_socket__1__1.html#ab4bd707da2d9d2136c59a08b3de2ce32">Read</a> )(<a class="el" href="group___typedefs.html#gafdc3895ee80f4750d0d95ae1b677e9b7">PP_Resource</a> tcp_socket, char *buffer, int32_t bytes_to_read, struct <a class="el" href="struct_p_p___completion_callback.html">PP_CompletionCallback</a> callback)</td></tr>
     22 <tr><td class="memItemLeft" align="right" valign="top">int32_t(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_p_p_b___t_c_p_socket__1__1.html#adea2cbc4e8487f2f26c2126983f9c856">Write</a> )(<a class="el" href="group___typedefs.html#gafdc3895ee80f4750d0d95ae1b677e9b7">PP_Resource</a> tcp_socket, const char *buffer, int32_t bytes_to_write, struct <a class="el" href="struct_p_p___completion_callback.html">PP_CompletionCallback</a> callback)</td></tr>
     23 <tr><td class="memItemLeft" align="right" valign="top">int32_t(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_p_p_b___t_c_p_socket__1__1.html#af3b28d2bf3f44d89e434e158854bea69">Listen</a> )(<a class="el" href="group___typedefs.html#gafdc3895ee80f4750d0d95ae1b677e9b7">PP_Resource</a> tcp_socket, int32_t backlog, struct <a class="el" href="struct_p_p___completion_callback.html">PP_CompletionCallback</a> callback)</td></tr>
     24 <tr><td class="memItemLeft" align="right" valign="top">int32_t(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_p_p_b___t_c_p_socket__1__1.html#a444d931c7fbb40e47cca8c55d57250f7">Accept</a> )(<a class="el" href="group___typedefs.html#gafdc3895ee80f4750d0d95ae1b677e9b7">PP_Resource</a> tcp_socket, <a class="el" href="group___typedefs.html#gafdc3895ee80f4750d0d95ae1b677e9b7">PP_Resource</a> *accepted_tcp_socket, struct <a class="el" href="struct_p_p___completion_callback.html">PP_CompletionCallback</a> callback)</td></tr>
     25 <tr><td class="memItemLeft" align="right" valign="top">void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_p_p_b___t_c_p_socket__1__1.html#afc2d9d7577df96bd0ac8f3cc6f503266">Close</a> )(<a class="el" href="group___typedefs.html#gafdc3895ee80f4750d0d95ae1b677e9b7">PP_Resource</a> tcp_socket)</td></tr>
     26 <tr><td class="memItemLeft" align="right" valign="top">int32_t(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_p_p_b___t_c_p_socket__1__1.html#ab64ed8f1f7b4c3dce8d3493fb894ea0d">SetOption</a> )(<a class="el" href="group___typedefs.html#gafdc3895ee80f4750d0d95ae1b677e9b7">PP_Resource</a> tcp_socket, <a class="el" href="group___enums.html#ga1557c0bbce8739a3418e6027a9c44e12">PP_TCPSocket_Option</a> name, struct <a class="el" href="struct_p_p___var.html">PP_Var</a> value, struct <a class="el" href="struct_p_p___completion_callback.html">PP_CompletionCallback</a> callback)</td></tr>
     27 </table>
     28 <hr /><a name="details" id="details"></a><h2>Detailed Description</h2>
     29 <div class="textblock"><p>The <code>PPB_TCPSocket</code> interface provides TCP socket operations. </p>
     30 <p>Permissions: Apps permission <code>socket</code> with subrule <code>tcp-connect</code> is required for <code><a class="el" href="struct_p_p_b___t_c_p_socket__1__1.html#a1d12313b4681e48fa6f9b789d26414cb" title="Connects the socket to the given address.">Connect()</a></code>; subrule <code>tcp-listen</code> is required for <code><a class="el" href="struct_p_p_b___t_c_p_socket__1__1.html#af3b28d2bf3f44d89e434e158854bea69" title="Starts listening.">Listen()</a></code>. For more details about network communication permissions, please see: <a href="http://developer.chrome.com/apps/app_network.html">http://developer.chrome.com/apps/app_network.html</a> </p>
     31 </div><hr /><h2>Field Documentation</h2>
     32 <a class="anchor" id="a444d931c7fbb40e47cca8c55d57250f7"></a><!-- doxytag: member="PPB_TCPSocket::Accept" ref="a444d931c7fbb40e47cca8c55d57250f7" args=")(PP_Resource tcp_socket, PP_Resource *accepted_tcp_socket, struct PP_CompletionCallback callback)" -->
     33 <div class="memitem">
     34 <div class="memproto">
     35 <table class="memname">
     36 <tr>
     37 <td class="memname">int32_t(* <a class="el" href="struct_p_p_b___t_c_p_socket__1__1.html#a444d931c7fbb40e47cca8c55d57250f7">PPB_TCPSocket::Accept</a>)(<a class="el" href="group___typedefs.html#gafdc3895ee80f4750d0d95ae1b677e9b7">PP_Resource</a> tcp_socket, <a class="el" href="group___typedefs.html#gafdc3895ee80f4750d0d95ae1b677e9b7">PP_Resource</a> *accepted_tcp_socket, struct <a class="el" href="struct_p_p___completion_callback.html">PP_CompletionCallback</a> callback)</td>
     38 </tr>
     39 </table>
     40 </div>
     41 <div class="memdoc">
     42 <p>Accepts a connection. </p>
     43 <p>The socket must be listening.</p>
     44 <dl class="params"><dt><b>Parameters:</b></dt><dd>
     45 <table class="params">
     46 <tr><td class="paramdir">[in]</td><td class="paramname">tcp_socket</td><td>A <code>PP_Resource</code> corresponding to a TCP socket. </td></tr>
     47 <tr><td class="paramdir">[out]</td><td class="paramname">accepted_tcp_socket</td><td>Stores the accepted TCP socket on success. </td></tr>
     48 <tr><td class="paramdir">[in]</td><td class="paramname">callback</td><td>A <code><a class="el" href="struct_p_p___completion_callback.html" title="PP_CompletionCallback is a common mechanism for supporting potentially asynchronous calls in browser ...">PP_CompletionCallback</a></code> to be called upon completion.</td></tr>
     49 </table>
     50 </dd>
     51 </dl>
     52 <dl class="return"><dt><b>Returns:</b></dt><dd>An int32_t containing an error code from <code><a class="el" href="pp__errors_8h.html" title="This file defines an enumeration of all PPAPI error codes.">pp_errors.h</a></code>, including (but not limited to):<ul>
     53 <li><code>PP_ERROR_CONNECTION_ABORTED</code>: A connection has been aborted. </li>
     54 </ul>
     55 </dd></dl>
     56 </div>
     57 </div>
     58 <a class="anchor" id="aae9a2f9ced445ca28a21721a0df5c567"></a><!-- doxytag: member="PPB_TCPSocket::Bind" ref="aae9a2f9ced445ca28a21721a0df5c567" args=")(PP_Resource tcp_socket, PP_Resource addr, struct PP_CompletionCallback callback)" -->
     59 <div class="memitem">
     60 <div class="memproto">
     61 <table class="memname">
     62 <tr>
     63 <td class="memname">int32_t(* <a class="el" href="struct_p_p_b___t_c_p_socket__1__1.html#aae9a2f9ced445ca28a21721a0df5c567">PPB_TCPSocket::Bind</a>)(<a class="el" href="group___typedefs.html#gafdc3895ee80f4750d0d95ae1b677e9b7">PP_Resource</a> tcp_socket, <a class="el" href="group___typedefs.html#gafdc3895ee80f4750d0d95ae1b677e9b7">PP_Resource</a> addr, struct <a class="el" href="struct_p_p___completion_callback.html">PP_CompletionCallback</a> callback)</td>
     64 </tr>
     65 </table>
     66 </div>
     67 <div class="memdoc">
     68 <p>Binds the socket to the given address. </p>
     69 <p>The socket must not be bound.</p>
     70 <dl class="params"><dt><b>Parameters:</b></dt><dd>
     71 <table class="params">
     72 <tr><td class="paramdir">[in]</td><td class="paramname">tcp_socket</td><td>A <code>PP_Resource</code> corresponding to a TCP socket. </td></tr>
     73 <tr><td class="paramdir">[in]</td><td class="paramname">addr</td><td>A <code>PPB_NetAddress</code> resource. </td></tr>
     74 <tr><td class="paramdir">[in]</td><td class="paramname">callback</td><td>A <code><a class="el" href="struct_p_p___completion_callback.html" title="PP_CompletionCallback is a common mechanism for supporting potentially asynchronous calls in browser ...">PP_CompletionCallback</a></code> to be called upon completion.</td></tr>
     75 </table>
     76 </dd>
     77 </dl>
     78 <dl class="return"><dt><b>Returns:</b></dt><dd>An int32_t containing an error code from <code><a class="el" href="pp__errors_8h.html" title="This file defines an enumeration of all PPAPI error codes.">pp_errors.h</a></code>, including (but not limited to):<ul>
     79 <li><code>PP_ERROR_ADDRESS_IN_USE</code>: the address is already in use.</li>
     80 <li><code>PP_ERROR_ADDRESS_INVALID</code>: the address is invalid. </li>
     81 </ul>
     82 </dd></dl>
     83 </div>
     84 </div>
     85 <a class="anchor" id="afc2d9d7577df96bd0ac8f3cc6f503266"></a><!-- doxytag: member="PPB_TCPSocket::Close" ref="afc2d9d7577df96bd0ac8f3cc6f503266" args=")(PP_Resource tcp_socket)" -->
     86 <div class="memitem">
     87 <div class="memproto">
     88 <table class="memname">
     89 <tr>
     90 <td class="memname">void(* <a class="el" href="struct_p_p_b___t_c_p_socket__1__1.html#afc2d9d7577df96bd0ac8f3cc6f503266">PPB_TCPSocket::Close</a>)(<a class="el" href="group___typedefs.html#gafdc3895ee80f4750d0d95ae1b677e9b7">PP_Resource</a> tcp_socket)</td>
     91 </tr>
     92 </table>
     93 </div>
     94 <div class="memdoc">
     95 <p>Cancels all pending operations and closes the socket. </p>
     96 <p>Any pending callbacks will still run, reporting <code>PP_ERROR_ABORTED</code> if pending IO was interrupted. After a call to this method, no output buffer pointers passed into previous <code><a class="el" href="struct_p_p_b___t_c_p_socket__1__1.html#ab4bd707da2d9d2136c59a08b3de2ce32" title="Reads data from the socket.">Read()</a></code> or <code><a class="el" href="struct_p_p_b___t_c_p_socket__1__1.html#a444d931c7fbb40e47cca8c55d57250f7" title="Accepts a connection.">Accept()</a></code> calls will be accessed. It is not valid to call <code><a class="el" href="struct_p_p_b___t_c_p_socket__1__1.html#a1d12313b4681e48fa6f9b789d26414cb" title="Connects the socket to the given address.">Connect()</a></code> or <code><a class="el" href="struct_p_p_b___t_c_p_socket__1__1.html#af3b28d2bf3f44d89e434e158854bea69" title="Starts listening.">Listen()</a></code> again.</p>
     97 <p>The socket is implicitly closed if it is destroyed, so you are not required to call this method.</p>
     98 <dl class="params"><dt><b>Parameters:</b></dt><dd>
     99 <table class="params">
    100 <tr><td class="paramdir">[in]</td><td class="paramname">tcp_socket</td><td>A <code>PP_Resource</code> corresponding to a TCP socket. </td></tr>
    101 </table>
    102 </dd>
    103 </dl>
    104 </div>
    105 </div>
    106 <a class="anchor" id="a1d12313b4681e48fa6f9b789d26414cb"></a><!-- doxytag: member="PPB_TCPSocket::Connect" ref="a1d12313b4681e48fa6f9b789d26414cb" args=")(PP_Resource tcp_socket, PP_Resource addr, struct PP_CompletionCallback callback)" -->
    107 <div class="memitem">
    108 <div class="memproto">
    109 <table class="memname">
    110 <tr>
    111 <td class="memname">int32_t(* <a class="el" href="struct_p_p_b___t_c_p_socket__1__1.html#a1d12313b4681e48fa6f9b789d26414cb">PPB_TCPSocket::Connect</a>)(<a class="el" href="group___typedefs.html#gafdc3895ee80f4750d0d95ae1b677e9b7">PP_Resource</a> tcp_socket, <a class="el" href="group___typedefs.html#gafdc3895ee80f4750d0d95ae1b677e9b7">PP_Resource</a> addr, struct <a class="el" href="struct_p_p___completion_callback.html">PP_CompletionCallback</a> callback)</td>
    112 </tr>
    113 </table>
    114 </div>
    115 <div class="memdoc">
    116 <p>Connects the socket to the given address. </p>
    117 <p>The socket must not be listening. Binding the socket beforehand is optional.</p>
    118 <dl class="params"><dt><b>Parameters:</b></dt><dd>
    119 <table class="params">
    120 <tr><td class="paramdir">[in]</td><td class="paramname">tcp_socket</td><td>A <code>PP_Resource</code> corresponding to a TCP socket. </td></tr>
    121 <tr><td class="paramdir">[in]</td><td class="paramname">addr</td><td>A <code>PPB_NetAddress</code> resource. </td></tr>
    122 <tr><td class="paramdir">[in]</td><td class="paramname">callback</td><td>A <code><a class="el" href="struct_p_p___completion_callback.html" title="PP_CompletionCallback is a common mechanism for supporting potentially asynchronous calls in browser ...">PP_CompletionCallback</a></code> to be called upon completion.</td></tr>
    123 </table>
    124 </dd>
    125 </dl>
    126 <dl class="return"><dt><b>Returns:</b></dt><dd>An int32_t containing an error code from <code><a class="el" href="pp__errors_8h.html" title="This file defines an enumeration of all PPAPI error codes.">pp_errors.h</a></code>, including (but not limited to):<ul>
    127 <li><code>PP_ERROR_NOACCESS</code>: the caller doesn't have required permissions.</li>
    128 <li><code>PP_ERROR_ADDRESS_UNREACHABLE</code>: <code>addr</code> is unreachable.</li>
    129 <li><code>PP_ERROR_CONNECTION_REFUSED</code>: the connection attempt was refused.</li>
    130 <li><code>PP_ERROR_CONNECTION_FAILED</code>: the connection attempt failed.</li>
    131 <li><code>PP_ERROR_CONNECTION_TIMEDOUT</code>: the connection attempt timed out.</li>
    132 </ul>
    133 </dd></dl>
    134 <p>Since version 1.1, if the socket is listening/connected or has a pending listen/connect request, <code><a class="el" href="struct_p_p_b___t_c_p_socket__1__1.html#a1d12313b4681e48fa6f9b789d26414cb" title="Connects the socket to the given address.">Connect()</a></code> will fail without starting a connection attempt; otherwise, any failure during the connection attempt will cause the socket to be closed. </p>
    135 </div>
    136 </div>
    137 <a class="anchor" id="a615cb349fbe99e25ae09078091c87b43"></a><!-- doxytag: member="PPB_TCPSocket::Create" ref="a615cb349fbe99e25ae09078091c87b43" args=")(PP_Instance instance)" -->
    138 <div class="memitem">
    139 <div class="memproto">
    140 <table class="memname">
    141 <tr>
    142 <td class="memname"><a class="el" href="group___typedefs.html#gafdc3895ee80f4750d0d95ae1b677e9b7">PP_Resource</a>(* <a class="el" href="struct_p_p_b___t_c_p_socket__1__1.html#a615cb349fbe99e25ae09078091c87b43">PPB_TCPSocket::Create</a>)(<a class="el" href="group___typedefs.html#ga89b662403e6a687bb914b80114c0d19d">PP_Instance</a> instance)</td>
    143 </tr>
    144 </table>
    145 </div>
    146 <div class="memdoc">
    147 <p>Creates a TCP socket resource. </p>
    148 <dl class="params"><dt><b>Parameters:</b></dt><dd>
    149 <table class="params">
    150 <tr><td class="paramdir">[in]</td><td class="paramname">instance</td><td>A <code>PP_Instance</code> identifying one instance of a module.</td></tr>
    151 </table>
    152 </dd>
    153 </dl>
    154 <dl class="return"><dt><b>Returns:</b></dt><dd>A <code>PP_Resource</code> corresponding to a TCP socket or 0 on failure. </dd></dl>
    155 </div>
    156 </div>
    157 <a class="anchor" id="ab64edd222b040500767f5c9182358b68"></a><!-- doxytag: member="PPB_TCPSocket::GetLocalAddress" ref="ab64edd222b040500767f5c9182358b68" args=")(PP_Resource tcp_socket)" -->
    158 <div class="memitem">
    159 <div class="memproto">
    160 <table class="memname">
    161 <tr>
    162 <td class="memname"><a class="el" href="group___typedefs.html#gafdc3895ee80f4750d0d95ae1b677e9b7">PP_Resource</a>(* <a class="el" href="struct_p_p_b___t_c_p_socket__1__1.html#ab64edd222b040500767f5c9182358b68">PPB_TCPSocket::GetLocalAddress</a>)(<a class="el" href="group___typedefs.html#gafdc3895ee80f4750d0d95ae1b677e9b7">PP_Resource</a> tcp_socket)</td>
    163 </tr>
    164 </table>
    165 </div>
    166 <div class="memdoc">
    167 <p>Gets the local address of the socket, if it is bound. </p>
    168 <dl class="params"><dt><b>Parameters:</b></dt><dd>
    169 <table class="params">
    170 <tr><td class="paramdir">[in]</td><td class="paramname">tcp_socket</td><td>A <code>PP_Resource</code> corresponding to a TCP socket.</td></tr>
    171 </table>
    172 </dd>
    173 </dl>
    174 <dl class="return"><dt><b>Returns:</b></dt><dd>A <code>PPB_NetAddress</code> resource on success or 0 on failure. </dd></dl>
    175 </div>
    176 </div>
    177 <a class="anchor" id="af28b600fcdf657ca31dd2e9218a774e1"></a><!-- doxytag: member="PPB_TCPSocket::GetRemoteAddress" ref="af28b600fcdf657ca31dd2e9218a774e1" args=")(PP_Resource tcp_socket)" -->
    178 <div class="memitem">
    179 <div class="memproto">
    180 <table class="memname">
    181 <tr>
    182 <td class="memname"><a class="el" href="group___typedefs.html#gafdc3895ee80f4750d0d95ae1b677e9b7">PP_Resource</a>(* <a class="el" href="struct_p_p_b___t_c_p_socket__1__1.html#af28b600fcdf657ca31dd2e9218a774e1">PPB_TCPSocket::GetRemoteAddress</a>)(<a class="el" href="group___typedefs.html#gafdc3895ee80f4750d0d95ae1b677e9b7">PP_Resource</a> tcp_socket)</td>
    183 </tr>
    184 </table>
    185 </div>
    186 <div class="memdoc">
    187 <p>Gets the remote address of the socket, if it is connected. </p>
    188 <dl class="params"><dt><b>Parameters:</b></dt><dd>
    189 <table class="params">
    190 <tr><td class="paramdir">[in]</td><td class="paramname">tcp_socket</td><td>A <code>PP_Resource</code> corresponding to a TCP socket.</td></tr>
    191 </table>
    192 </dd>
    193 </dl>
    194 <dl class="return"><dt><b>Returns:</b></dt><dd>A <code>PPB_NetAddress</code> resource on success or 0 on failure. </dd></dl>
    195 </div>
    196 </div>
    197 <a class="anchor" id="afe32ae060181370e12c93c206964a58f"></a><!-- doxytag: member="PPB_TCPSocket::IsTCPSocket" ref="afe32ae060181370e12c93c206964a58f" args=")(PP_Resource resource)" -->
    198 <div class="memitem">
    199 <div class="memproto">
    200 <table class="memname">
    201 <tr>
    202 <td class="memname"><a class="el" href="group___enums.html#ga4f272d99be14aacafe08dfd4ef830918">PP_Bool</a>(* <a class="el" href="struct_p_p_b___t_c_p_socket__1__1.html#afe32ae060181370e12c93c206964a58f">PPB_TCPSocket::IsTCPSocket</a>)(<a class="el" href="group___typedefs.html#gafdc3895ee80f4750d0d95ae1b677e9b7">PP_Resource</a> resource)</td>
    203 </tr>
    204 </table>
    205 </div>
    206 <div class="memdoc">
    207 <p>Determines if a given resource is a TCP socket. </p>
    208 <dl class="params"><dt><b>Parameters:</b></dt><dd>
    209 <table class="params">
    210 <tr><td class="paramdir">[in]</td><td class="paramname">resource</td><td>A <code>PP_Resource</code> to check.</td></tr>
    211 </table>
    212 </dd>
    213 </dl>
    214 <dl class="return"><dt><b>Returns:</b></dt><dd><code>PP_TRUE</code> if the input is a <code>PPB_TCPSocket</code> resource; <code>PP_FALSE</code> otherwise. </dd></dl>
    215 </div>
    216 </div>
    217 <a class="anchor" id="af3b28d2bf3f44d89e434e158854bea69"></a><!-- doxytag: member="PPB_TCPSocket::Listen" ref="af3b28d2bf3f44d89e434e158854bea69" args=")(PP_Resource tcp_socket, int32_t backlog, struct PP_CompletionCallback callback)" -->
    218 <div class="memitem">
    219 <div class="memproto">
    220 <table class="memname">
    221 <tr>
    222 <td class="memname">int32_t(* <a class="el" href="struct_p_p_b___t_c_p_socket__1__1.html#af3b28d2bf3f44d89e434e158854bea69">PPB_TCPSocket::Listen</a>)(<a class="el" href="group___typedefs.html#gafdc3895ee80f4750d0d95ae1b677e9b7">PP_Resource</a> tcp_socket, int32_t backlog, struct <a class="el" href="struct_p_p___completion_callback.html">PP_CompletionCallback</a> callback)</td>
    223 </tr>
    224 </table>
    225 </div>
    226 <div class="memdoc">
    227 <p>Starts listening. </p>
    228 <p>The socket must be bound and not connected.</p>
    229 <dl class="params"><dt><b>Parameters:</b></dt><dd>
    230 <table class="params">
    231 <tr><td class="paramdir">[in]</td><td class="paramname">tcp_socket</td><td>A <code>PP_Resource</code> corresponding to a TCP socket. </td></tr>
    232 <tr><td class="paramdir">[in]</td><td class="paramname">backlog</td><td>A hint to determine the maximum length to which the queue of pending connections may grow. </td></tr>
    233 <tr><td class="paramdir">[in]</td><td class="paramname">callback</td><td>A <code><a class="el" href="struct_p_p___completion_callback.html" title="PP_CompletionCallback is a common mechanism for supporting potentially asynchronous calls in browser ...">PP_CompletionCallback</a></code> to be called upon completion.</td></tr>
    234 </table>
    235 </dd>
    236 </dl>
    237 <dl class="return"><dt><b>Returns:</b></dt><dd>An int32_t containing an error code from <code><a class="el" href="pp__errors_8h.html" title="This file defines an enumeration of all PPAPI error codes.">pp_errors.h</a></code>, including (but not limited to):<ul>
    238 <li><code>PP_ERROR_NOACCESS</code>: the caller doesn't have required permissions.</li>
    239 <li><code>PP_ERROR_ADDRESS_IN_USE</code>: Another socket is already listening on the same port. </li>
    240 </ul>
    241 </dd></dl>
    242 </div>
    243 </div>
    244 <a class="anchor" id="ab4bd707da2d9d2136c59a08b3de2ce32"></a><!-- doxytag: member="PPB_TCPSocket::Read" ref="ab4bd707da2d9d2136c59a08b3de2ce32" args=")(PP_Resource tcp_socket, char *buffer, int32_t bytes_to_read, struct PP_CompletionCallback callback)" -->
    245 <div class="memitem">
    246 <div class="memproto">
    247 <table class="memname">
    248 <tr>
    249 <td class="memname">int32_t(* <a class="el" href="struct_p_p_b___t_c_p_socket__1__1.html#ab4bd707da2d9d2136c59a08b3de2ce32">PPB_TCPSocket::Read</a>)(<a class="el" href="group___typedefs.html#gafdc3895ee80f4750d0d95ae1b677e9b7">PP_Resource</a> tcp_socket, char *buffer, int32_t bytes_to_read, struct <a class="el" href="struct_p_p___completion_callback.html">PP_CompletionCallback</a> callback)</td>
    250 </tr>
    251 </table>
    252 </div>
    253 <div class="memdoc">
    254 <p>Reads data from the socket. </p>
    255 <p>The socket must be connected. It may perform a partial read.</p>
    256 <dl class="params"><dt><b>Parameters:</b></dt><dd>
    257 <table class="params">
    258 <tr><td class="paramdir">[in]</td><td class="paramname">tcp_socket</td><td>A <code>PP_Resource</code> corresponding to a TCP socket. </td></tr>
    259 <tr><td class="paramdir">[out]</td><td class="paramname">buffer</td><td>The buffer to store the received data on success. It must be at least as large as <code>bytes_to_read</code>. </td></tr>
    260 <tr><td class="paramdir">[in]</td><td class="paramname">bytes_to_read</td><td>The number of bytes to read. </td></tr>
    261 <tr><td class="paramdir">[in]</td><td class="paramname">callback</td><td>A <code><a class="el" href="struct_p_p___completion_callback.html" title="PP_CompletionCallback is a common mechanism for supporting potentially asynchronous calls in browser ...">PP_CompletionCallback</a></code> to be called upon completion.</td></tr>
    262 </table>
    263 </dd>
    264 </dl>
    265 <dl class="return"><dt><b>Returns:</b></dt><dd>A non-negative number on success to indicate how many bytes have been read, 0 means that end-of-file was reached; otherwise, an error code from <code><a class="el" href="pp__errors_8h.html" title="This file defines an enumeration of all PPAPI error codes.">pp_errors.h</a></code>. </dd></dl>
    266 </div>
    267 </div>
    268 <a class="anchor" id="ab64ed8f1f7b4c3dce8d3493fb894ea0d"></a><!-- doxytag: member="PPB_TCPSocket::SetOption" ref="ab64ed8f1f7b4c3dce8d3493fb894ea0d" args=")(PP_Resource tcp_socket, PP_TCPSocket_Option name, struct PP_Var value, struct PP_CompletionCallback callback)" -->
    269 <div class="memitem">
    270 <div class="memproto">
    271 <table class="memname">
    272 <tr>
    273 <td class="memname">int32_t(* <a class="el" href="struct_p_p_b___t_c_p_socket__1__1.html#ab64ed8f1f7b4c3dce8d3493fb894ea0d">PPB_TCPSocket::SetOption</a>)(<a class="el" href="group___typedefs.html#gafdc3895ee80f4750d0d95ae1b677e9b7">PP_Resource</a> tcp_socket, <a class="el" href="group___enums.html#ga1557c0bbce8739a3418e6027a9c44e12">PP_TCPSocket_Option</a> name, struct <a class="el" href="struct_p_p___var.html">PP_Var</a> value, struct <a class="el" href="struct_p_p___completion_callback.html">PP_CompletionCallback</a> callback)</td>
    274 </tr>
    275 </table>
    276 </div>
    277 <div class="memdoc">
    278 <p>Sets a socket option on the TCP socket. </p>
    279 <p>Please see the <code>PP_TCPSocket_Option</code> description for option names, value types and allowed values.</p>
    280 <dl class="params"><dt><b>Parameters:</b></dt><dd>
    281 <table class="params">
    282 <tr><td class="paramdir">[in]</td><td class="paramname">tcp_socket</td><td>A <code>PP_Resource</code> corresponding to a TCP socket. </td></tr>
    283 <tr><td class="paramdir">[in]</td><td class="paramname">name</td><td>The option to set. </td></tr>
    284 <tr><td class="paramdir">[in]</td><td class="paramname">value</td><td>The option value to set. </td></tr>
    285 <tr><td class="paramdir">[in]</td><td class="paramname">callback</td><td>A <code><a class="el" href="struct_p_p___completion_callback.html" title="PP_CompletionCallback is a common mechanism for supporting potentially asynchronous calls in browser ...">PP_CompletionCallback</a></code> to be called upon completion.</td></tr>
    286 </table>
    287 </dd>
    288 </dl>
    289 <dl class="return"><dt><b>Returns:</b></dt><dd>An int32_t containing an error code from <code><a class="el" href="pp__errors_8h.html" title="This file defines an enumeration of all PPAPI error codes.">pp_errors.h</a></code>. </dd></dl>
    290 </div>
    291 </div>
    292 <a class="anchor" id="adea2cbc4e8487f2f26c2126983f9c856"></a><!-- doxytag: member="PPB_TCPSocket::Write" ref="adea2cbc4e8487f2f26c2126983f9c856" args=")(PP_Resource tcp_socket, const char *buffer, int32_t bytes_to_write, struct PP_CompletionCallback callback)" -->
    293 <div class="memitem">
    294 <div class="memproto">
    295 <table class="memname">
    296 <tr>
    297 <td class="memname">int32_t(* <a class="el" href="struct_p_p_b___t_c_p_socket__1__1.html#adea2cbc4e8487f2f26c2126983f9c856">PPB_TCPSocket::Write</a>)(<a class="el" href="group___typedefs.html#gafdc3895ee80f4750d0d95ae1b677e9b7">PP_Resource</a> tcp_socket, const char *buffer, int32_t bytes_to_write, struct <a class="el" href="struct_p_p___completion_callback.html">PP_CompletionCallback</a> callback)</td>
    298 </tr>
    299 </table>
    300 </div>
    301 <div class="memdoc">
    302 <p>Writes data to the socket. </p>
    303 <p>The socket must be connected. It may perform a partial write.</p>
    304 <dl class="params"><dt><b>Parameters:</b></dt><dd>
    305 <table class="params">
    306 <tr><td class="paramdir">[in]</td><td class="paramname">tcp_socket</td><td>A <code>PP_Resource</code> corresponding to a TCP socket. </td></tr>
    307 <tr><td class="paramdir">[in]</td><td class="paramname">buffer</td><td>The buffer containing the data to write. </td></tr>
    308 <tr><td class="paramdir">[in]</td><td class="paramname">bytes_to_write</td><td>The number of bytes to write. </td></tr>
    309 <tr><td class="paramdir">[in]</td><td class="paramname">callback</td><td>A <code><a class="el" href="struct_p_p___completion_callback.html" title="PP_CompletionCallback is a common mechanism for supporting potentially asynchronous calls in browser ...">PP_CompletionCallback</a></code> to be called upon completion.</td></tr>
    310 </table>
    311 </dd>
    312 </dl>
    313 <dl class="return"><dt><b>Returns:</b></dt><dd>A non-negative number on success to indicate how many bytes have been written; otherwise, an error code from <code><a class="el" href="pp__errors_8h.html" title="This file defines an enumeration of all PPAPI error codes.">pp_errors.h</a></code>. </dd></dl>
    314 </div>
    315 </div>
    316 <hr />The documentation for this struct was generated from the following file:<ul>
    317 <li><a class="el" href="ppb__tcp__socket_8h.html">ppb_tcp_socket.h</a></li>
    318 </ul>
    319 </div><!-- contents -->
    320 </div>
    321 {{/partials.standard_nacl_api}}
    322