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