ppb_tcp_socket.h revision eb525c5499e34cc9c4b825d6d9e75bb07cc06ace
17d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)/* Copyright 2013 The Chromium Authors. All rights reserved. 27d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) * Use of this source code is governed by a BSD-style license that can be 37d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) * found in the LICENSE file. 47d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) */ 57d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 67d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)/* From ppb_tcp_socket.idl modified Sat Jun 22 11:17:34 2013. */ 77d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 87d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#ifndef PPAPI_C_PPB_TCP_SOCKET_H_ 97d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#define PPAPI_C_PPB_TCP_SOCKET_H_ 107d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 117d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "ppapi/c/pp_bool.h" 127d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "ppapi/c/pp_completion_callback.h" 13424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)#include "ppapi/c/pp_instance.h" 1458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "ppapi/c/pp_macros.h" 1546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "ppapi/c/pp_resource.h" 167d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "ppapi/c/pp_stdint.h" 1746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)#include "ppapi/c/pp_var.h" 1868043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) 1968043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#define PPB_TCPSOCKET_INTERFACE_1_0 "PPB_TCPSocket;1.0" 2068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#define PPB_TCPSOCKET_INTERFACE PPB_TCPSOCKET_INTERFACE_1_0 217d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 227d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)/** 237d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) * @file 24eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * This file defines the <code>PPB_TCPSocket</code> interface. 25eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch */ 267d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 277d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 2846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)/** 297d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) * @addtogroup Enums 30424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) * @{ 31424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) */ 32424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)/** 33424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) * Option names used by <code>SetOption()</code>. 34424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) */ 35424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)typedef enum { 3668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) /** 3768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) * Disables coalescing of small writes to make TCP segments, and instead 387d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) * delivers data immediately. Value's type is <code>PP_VARTYPE_BOOL</code>. 397d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) * This option can only be set after a successful <code>Connect()</code> call. 403551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) */ 41a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) PP_TCPSOCKET_OPTION_NO_DELAY = 0, 42a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) /** 437d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) * Specifies the total per-socket buffer space reserved for sends. Value's 447d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) * type should be <code>PP_VARTYPE_INT32</code>. 45a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) * This option can only be set after a successful <code>Connect()</code> call. 465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * 4758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * Note: This is only treated as a hint for the browser to set the buffer 48c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch * size. Even if <code>SetOption()</code> succeeds, the browser doesn't 49c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch * guarantee it will conform to the size. 50c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch */ 51f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) PP_TCPSOCKET_OPTION_SEND_BUFFER_SIZE = 1, 52f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) /** 53f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) * Specifies the total per-socket buffer space reserved for receives. Value's 54f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) * type should be <code>PP_VARTYPE_INT32</code>. 55c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch * This option can only be set after a successful <code>Connect()</code> call. 56c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch * 57a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) * Note: This is only treated as a hint for the browser to set the buffer 58a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) * size. Even if <code>SetOption()</code> succeeds, the browser doesn't 59a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) * guarantee it will conform to the size. 6058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) */ 615d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) PP_TCPSOCKET_OPTION_RECV_BUFFER_SIZE = 2 6258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)} PP_TCPSocket_Option; 633551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)PP_COMPILE_ASSERT_SIZE_IN_BYTES(PP_TCPSocket_Option, 4); 643551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)/** 65a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) * @} 665d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) */ 67cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 68cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)/** 69cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * @addtogroup Interfaces 70cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * @{ 71cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) */ 72cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)/** 73cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * The <code>PPB_TCPSocket</code> interface provides TCP socket operations. 74cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * 75cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * Permissions: Apps permission <code>socket</code> with subrule 76cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * <code>tcp-connect</code> is required for <code>Connect()</code>. 77cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * For more details about network communication permissions, please see: 78cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * http://developer.chrome.com/apps/app_network.html 79cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) */ 805d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)struct PPB_TCPSocket_1_0 { 815d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) /** 825d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * Creates a TCP socket resource. 835d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * 845d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @param[in] instance A <code>PP_Instance</code> identifying one instance of 855d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * a module. 865d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * 875d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @return A <code>PP_Resource</code> corresponding to a TCP socket or 0 885d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * on failure. 895d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) */ 9046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) PP_Resource (*Create)(PP_Instance instance); 91a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) /** 925d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * Determines if a given resource is a TCP socket. 93a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) * 94a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) * @param[in] resource A <code>PP_Resource</code> to check. 955d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * 965d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) * @return <code>PP_TRUE</code> if the input is a 97a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) * <code>PPB_TCPSocket</code> resource; <code>PP_FALSE</code> otherwise. 98a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) */ 99a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) PP_Bool (*IsTCPSocket)(PP_Resource resource); 100a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) /** 10146d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) * Connects the socket to the given address. 10246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) * 10346d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) * @param[in] tcp_socket A <code>PP_Resource</code> corresponding to a TCP 1047d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) * socket. 105424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) * @param[in] addr A <code>PPB_NetAddress</code> resource. 106424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) * @param[in] callback A <code>PP_CompletionCallback</code> to be called upon 107424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) * completion. 108424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) * 109424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) * @return An int32_t containing an error code from <code>pp_errors.h</code>, 110424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) * including (but not limited to): 111424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) * - <code>PP_ERROR_NOACCESS</code>: the caller doesn't have required 112424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) * permissions. 113424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) * - <code>PP_ERROR_ADDRESS_UNREACHABLE</code>: <code>addr</code> is 114a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) * unreachable. 115a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) * - <code>PP_ERROR_CONNECTION_REFUSED</code>: the connection attempt was 116a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) * refused. 117a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) * - <code>PP_ERROR_CONNECTION_FAILED</code>: the connection attempt failed. 118a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) * - <code>PP_ERROR_CONNECTION_TIMEDOUT</code>: the connection attempt timed 119a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) * out. 120a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) */ 121a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) int32_t (*Connect)(PP_Resource tcp_socket, 122a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) PP_Resource addr, 123a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) struct PP_CompletionCallback callback); 124a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) /** 125a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) * Gets the local address of the socket, if it is connected. 126a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) * 127a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) * @param[in] tcp_socket A <code>PP_Resource</code> corresponding to a TCP 128a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) * socket. 1293551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) * 13068043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) * @return A <code>PPB_NetAddress</code> resource on success or 0 on failure. 13168043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) */ 13268043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) PP_Resource (*GetLocalAddress)(PP_Resource tcp_socket); 13368043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) /** 13468043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) * Gets the remote address of the socket, if it is connected. 13568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) * 136424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) * @param[in] tcp_socket A <code>PP_Resource</code> corresponding to a TCP 137424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) * socket. 138424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) * 1397d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) * @return A <code>PPB_NetAddress</code> resource on success or 0 on failure. 1407d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) */ 141cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) PP_Resource (*GetRemoteAddress)(PP_Resource tcp_socket); 142cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) /** 143cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * Reads data from the socket. The socket must be connected. It may perform a 144cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * partial read. 145cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * 146cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) * @param[in] tcp_socket A <code>PP_Resource</code> corresponding to a TCP 147eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * socket. 148424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) * @param[out] buffer The buffer to store the received data on success. It 149424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) * must be at least as large as <code>bytes_to_read</code>. 150424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) * @param[in] bytes_to_read The number of bytes to read. 151eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * @param[in] callback A <code>PP_CompletionCallback</code> to be called upon 1523551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) * completion. 1533551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) * 1543551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) * @return A non-negative number on success to indicate how many bytes have 1553551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) * been read, 0 means that end-of-file was reached; otherwise, an error code 156eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * from <code>pp_errors.h</code>. 157cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) */ 158cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) int32_t (*Read)(PP_Resource tcp_socket, 159cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) char* buffer, 160cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) int32_t bytes_to_read, 161cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) struct PP_CompletionCallback callback); 162cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) /** 163eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * Writes data to the socket. The socket must be connected. It may perform a 164424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) * partial write. 165424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) * 16668043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) * @param[in] tcp_socket A <code>PP_Resource</code> corresponding to a TCP 16768043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles) * socket. 16846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) * @param[in] buffer The buffer containing the data to write. 16946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles) * @param[in] bytes_to_write The number of bytes to write. 1707d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) * @param[in] callback A <code>PP_CompletionCallback</code> to be called upon 1717d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) * completion. 1727d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) * 1737d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) * @return A non-negative number on success to indicate how many bytes have 1747d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) * been written; otherwise, an error code from <code>pp_errors.h</code>. 1757d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) */ 176 int32_t (*Write)(PP_Resource tcp_socket, 177 const char* buffer, 178 int32_t bytes_to_write, 179 struct PP_CompletionCallback callback); 180 /** 181 * Cancels all pending reads and writes and disconnects the socket. Any 182 * pending callbacks will still run, reporting <code>PP_ERROR_ABORTED</code> 183 * if pending IO was interrupted. After a call to this method, no output 184 * buffer pointers passed into previous <code>Read()</code> calls will be 185 * accessed. It is not valid to call <code>Connect()</code> again. 186 * 187 * The socket is implicitly closed if it is destroyed, so you are not required 188 * to call this method. 189 * 190 * @param[in] tcp_socket A <code>PP_Resource</code> corresponding to a TCP 191 * socket. 192 */ 193 void (*Close)(PP_Resource tcp_socket); 194 /** 195 * Sets a socket option on the TCP socket. 196 * Please see the <code>PP_TCPSocket_Option</code> description for option 197 * names, value types and allowed values. 198 * 199 * @param[in] tcp_socket A <code>PP_Resource</code> corresponding to a TCP 200 * socket. 201 * @param[in] name The option to set. 202 * @param[in] value The option value to set. 203 * @param[in] callback A <code>PP_CompletionCallback</code> to be called upon 204 * completion. 205 * 206 * @return An int32_t containing an error code from <code>pp_errors.h</code>. 207 */ 208 int32_t (*SetOption)(PP_Resource tcp_socket, 209 PP_TCPSocket_Option name, 210 struct PP_Var value, 211 struct PP_CompletionCallback callback); 212}; 213 214typedef struct PPB_TCPSocket_1_0 PPB_TCPSocket; 215/** 216 * @} 217 */ 218 219#endif /* PPAPI_C_PPB_TCP_SOCKET_H_ */ 220 221