1 /* Copyright (c) 2013 The Chromium Authors. All rights reserved. 2 * Use of this source code is governed by a BSD-style license that can be 3 * found in the LICENSE file. 4 */ 5 6 /* From extensions/dev/ppb_ext_socket_dev.idl, 7 * modified Tue May 21 16:00:11 2013. 8 */ 9 10 #ifndef PPAPI_C_EXTENSIONS_DEV_PPB_EXT_SOCKET_DEV_H_ 11 #define PPAPI_C_EXTENSIONS_DEV_PPB_EXT_SOCKET_DEV_H_ 12 13 #include "ppapi/c/pp_bool.h" 14 #include "ppapi/c/pp_completion_callback.h" 15 #include "ppapi/c/pp_instance.h" 16 #include "ppapi/c/pp_macros.h" 17 #include "ppapi/c/pp_stdint.h" 18 #include "ppapi/c/pp_var.h" 19 20 #define PPB_EXT_SOCKET_DEV_INTERFACE_0_1 "PPB_Ext_Socket(Dev);0.1" 21 #define PPB_EXT_SOCKET_DEV_INTERFACE_0_2 "PPB_Ext_Socket(Dev);0.2" 22 #define PPB_EXT_SOCKET_DEV_INTERFACE PPB_EXT_SOCKET_DEV_INTERFACE_0_2 23 24 /** 25 * @file 26 * This file defines the Pepper equivalent of the <code>chrome.socket</code> 27 * extension API. 28 */ 29 30 31 /** 32 * @addtogroup Typedefs 33 * @{ 34 */ 35 /** 36 * A string <code>PP_Var</code> which has one of the following values: 37 * - "tcp" 38 * - "udp" 39 */ 40 typedef struct PP_Var PP_Ext_Socket_SocketType_Dev; 41 42 /** 43 * A dictionary <code>PP_Var</code>. 44 */ 45 typedef struct PP_Var PP_Ext_Socket_CreateOptions_Dev; 46 47 /** 48 * A dictionary <code>PP_Var</code> which contains 49 * - "socketId" : integer <code>PP_Var</code> 50 * The id of the newly created socket. 51 */ 52 typedef struct PP_Var PP_Ext_Socket_CreateInfo_Dev; 53 54 /** 55 * A dictionary <code>PP_Var</code> which contains 56 * - "resultCode" : integer <code>PP_Var</code> 57 * - "socketId" : integer or undefined <code>PP_Var</code> 58 * The id of the accepted socket. 59 */ 60 typedef struct PP_Var PP_Ext_Socket_AcceptInfo_Dev; 61 62 /** 63 * A dictionary <code>PP_Var</code> which contains 64 * - "resultCode" : integer <code>PP_Var</code> 65 * The resultCode returned from the underlying read() call. 66 * - "data" : array buffer <code>PP_Var</code> 67 */ 68 typedef struct PP_Var PP_Ext_Socket_ReadInfo_Dev; 69 70 /** 71 * A dictionary <code>PP_Var</code> which contains 72 * - "bytesWritten" : integer <code>PP_Var</code> 73 * The number of bytes sent, or a negative error code. 74 */ 75 typedef struct PP_Var PP_Ext_Socket_WriteInfo_Dev; 76 77 /** 78 * A dictionary <code>PP_Var</code> which contains 79 * - "resultCode" : integer <code>PP_Var</code> 80 * The resultCode returned from the underlying recvfrom() call. 81 * - "data": array buffer <code>PP_Var</code> 82 * - "address": string <code>PP_Var</code> 83 * The address of the remote machine. 84 * - "port": integer <code>PP_Var</code> 85 */ 86 typedef struct PP_Var PP_Ext_Socket_RecvFromInfo_Dev; 87 88 /** 89 * A dictionary <code>PP_Var</code> which contains 90 * - "socketType" : string <code>PP_Var</code> which matches the description of 91 * <code>PP_Ext_Socket_SocketType_Dev</code> 92 * The type of the passed socket. This will be <code>tcp</code> or 93 * <code>udp</code>. 94 * - "connected" : boolean <code>PP_Var</code> 95 * Whether or not the underlying socket is connected. 96 * 97 * For <code>tcp</code> sockets, this will remain true even if the remote peer 98 * has disconnected. Reading or writing to the socket may then result in an 99 * error, hinting that this socket should be disconnected via 100 * <code>Disconnect()</code>. 101 * 102 * For <code>udp</code> sockets, this just represents whether a default remote 103 * address has been specified for reading and writing packets. 104 * - "peerAddress" : string or undefined <code>PP_Var</code> 105 * If the underlying socket is connected, contains the IPv4/6 address of the 106 * peer. 107 * - "peerPort" : integer or undefined <code>PP_Var</code> 108 * If the underlying socket is connected, contains the port of the connected 109 * peer. 110 * - "localAddress" : string or undefined <code>PP_Var</code> 111 * If the underlying socket is bound or connected, contains its local IPv4/6 112 * address. 113 * - "localPort" : integer or undefined <code>PP_Var</code> 114 * If the underlying socket is bound or connected, contains its local port. 115 */ 116 typedef struct PP_Var PP_Ext_Socket_SocketInfo_Dev; 117 118 /** 119 * A dictionary <code>PP_Var</code> which contains 120 * - "name" : string <code>PP_Var</code> 121 * The underlying name of the adapter. On *nix, this will typically be "eth0", 122 * "lo", etc. 123 * - "address": string <code>PP_Var</code> 124 * The available IPv4/6 address. 125 */ 126 typedef struct PP_Var PP_Ext_Socket_NetworkInterface_Dev; 127 128 /** 129 * An array <code>PP_Var</code> which contains elements of 130 * <code>PP_Ext_Socket_NetworkInterface_Dev</code>. 131 */ 132 typedef struct PP_Var PP_Ext_Socket_NetworkInterface_Dev_Array; 133 /** 134 * @} 135 */ 136 137 /** 138 * @addtogroup Interfaces 139 * @{ 140 */ 141 struct PPB_Ext_Socket_Dev_0_2 { 142 /** 143 * Creates a socket of the specified type that will connect to the specified 144 * remote machine. 145 * 146 * @param[in] instance A <code>PP_Instance</code>. 147 * @param[in] type A <code>PP_Ext_Socket_SocketType_Dev</code>. The type of 148 * socket to create. Must be <code>tcp</code> or <code>udp</code>. 149 * @param[in] options An undefined <code>PP_Var</code> or 150 * <code>PP_Ext_Socket_CreateOptions_Dev</code>. The socket options. 151 * @param[out] create_info A <code>PP_Ext_Socket_CreateInfo_Dev</code>. 152 * @param[in] callback A <code>PP_CompletionCallback</code> to be called 153 * upon completion. 154 * 155 * @return An error code from <code>pp_errors.h</code>. 156 */ 157 int32_t (*Create)(PP_Instance instance, 158 PP_Ext_Socket_SocketType_Dev type, 159 PP_Ext_Socket_CreateOptions_Dev options, 160 PP_Ext_Socket_CreateInfo_Dev* create_info, 161 struct PP_CompletionCallback callback); 162 /** 163 * Destroys the socket. Each socket created should be destroyed after use. 164 * 165 * @param[in] instance A <code>PP_Instance</code>. 166 * @param[in] socket_id An integer <code>PP_Var</code>. The socket ID. 167 */ 168 void (*Destroy)(PP_Instance instance, struct PP_Var socket_id); 169 /** 170 * Connects the socket to the remote machine (for a <code>tcp</code> socket). 171 * For a <code>udp</code> socket, this sets the default address which packets 172 * are sent to and read from for <code>Read()</code> and <code>Write()</code> 173 * calls. 174 * 175 * @param[in] instance A <code>PP_Instance</code>. 176 * @param[in] socket_id An integer <code>PP_Var</code>. The socket ID. 177 * @param[in] hostname A string <code>PP_Var</code>. The hostname or IP 178 * address of the remote machine. 179 * @param[in] port An integer <code>PP_Var</code>. The port of the remote 180 * machine. 181 * @param[out] result An integer <code>PP_Var</code>. 182 * @param[in] callback A <code>PP_CompletionCallback</code> to be called 183 * upon completion. 184 * 185 * @return An error code from <code>pp_errors.h</code>. 186 */ 187 int32_t (*Connect)(PP_Instance instance, 188 struct PP_Var socket_id, 189 struct PP_Var hostname, 190 struct PP_Var port, 191 struct PP_Var* result, 192 struct PP_CompletionCallback callback); 193 /** 194 * Binds the local address for socket. Currently, it does not support TCP 195 * socket. 196 * 197 * @param[in] instance A <code>PP_Instance</code>. 198 * @param[in] socket_id An integer <code>PP_Var</code>. The socket ID. 199 * @param[in] address A string <code>PP_Var</code>. The address of the local 200 * machine. 201 * @param[in] port An integer <code>PP_Var</code>. The port of the local 202 * machine. 203 * @param[out] result An integer <code>PP_Var</code>. 204 * @param[in] callback A <code>PP_CompletionCallback</code> to be called 205 * upon completion. 206 * 207 * @return An error code from <code>pp_errors.h</code>. 208 */ 209 int32_t (*Bind)(PP_Instance instance, 210 struct PP_Var socket_id, 211 struct PP_Var address, 212 struct PP_Var port, 213 struct PP_Var* result, 214 struct PP_CompletionCallback callback); 215 /** 216 * Disconnects the socket. For UDP sockets, <code>Disconnect</code> is a 217 * non-operation but is safe to call. 218 * 219 * @param[in] instance A <code>PP_Instance</code>. 220 * @param[in] socket_id An integer <code>PP_Var</code>. The socket ID. 221 */ 222 void (*Disconnect)(PP_Instance instance, struct PP_Var socket_id); 223 /** 224 * Reads data from the given connected socket. 225 * 226 * @param[in] instance A <code>PP_Instance</code>. 227 * @param[in] socket_id An integer <code>PP_Var</code>. The socket ID. 228 * @param[in] buffer_size An undefined or integer <code>PP_Var</code>. The 229 * read buffer size. 230 * @param[out] read_info A <code>PP_Ext_Socket_ReadInfo_Dev</code>. 231 * @param[in] callback A <code>PP_CompletionCallback</code> to be called 232 * upon completion. 233 * 234 * @return An error code from <code>pp_errors.h</code>. 235 */ 236 int32_t (*Read)(PP_Instance instance, 237 struct PP_Var socket_id, 238 struct PP_Var buffer_size, 239 PP_Ext_Socket_ReadInfo_Dev* read_info, 240 struct PP_CompletionCallback callback); 241 /** 242 * Writes data on the given connected socket. 243 * 244 * @param[in] instance A <code>PP_Instance</code>. 245 * @param[in] socket_id An integer <code>PP_Var</code>. The socket ID. 246 * @param[in] data An array buffer <code>PP_Var</code>. The data to write. 247 * @param[out] write_info A <code>PP_Ext_Socket_WriteInfo_Dev</code>. 248 * @param[in] callback A <code>PP_CompletionCallback</code> to be called 249 * upon completion. 250 * 251 * @return An error code from <code>pp_errors.h</code>. 252 */ 253 int32_t (*Write)(PP_Instance instance, 254 struct PP_Var socket_id, 255 struct PP_Var data, 256 PP_Ext_Socket_WriteInfo_Dev* write_info, 257 struct PP_CompletionCallback callback); 258 /** 259 * Receives data from the given UDP socket. 260 * 261 * @param[in] instance A <code>PP_Instance</code>. 262 * @param[in] socket_id An integer <code>PP_Var</code>. The socket ID. 263 * @param[in] buffer_size An undefined or integer <code>PP_Var</code>. The 264 * receive buffer size. 265 * @param[out] recv_from_info A <code>PP_Ext_Socket_RecvFromInfo_Dev</code>. 266 * @param[in] callback A <code>PP_CompletionCallback</code> to be called 267 * upon completion. 268 * 269 * @return An error code from <code>pp_errors.h</code>. 270 */ 271 int32_t (*RecvFrom)(PP_Instance instance, 272 struct PP_Var socket_id, 273 struct PP_Var buffer_size, 274 PP_Ext_Socket_RecvFromInfo_Dev* recv_from_info, 275 struct PP_CompletionCallback callback); 276 /** 277 * Sends data on the given UDP socket to the given address and port. 278 * 279 * @param[in] instance A <code>PP_Instance</code>. 280 * @param[in] socket_id An integer <code>PP_Var</code>. The socket ID. 281 * @param[in] data An array buffer <code>PP_Var</code>. 282 * @param[in] address A string <code>PP_Var</code>. The address of the remote 283 * machine. 284 * @param[in] port An integer <code>PP_Var</code>. The port of the remote 285 * machine. 286 * @param[out] write_info A <code>PP_Ext_Socket_WriteInfo_Dev</code>. 287 * @param[in] callback A <code>PP_CompletionCallback</code> to be called 288 * upon completion. 289 * 290 * @return An error code from <code>pp_errors.h</code>. 291 */ 292 int32_t (*SendTo)(PP_Instance instance, 293 struct PP_Var socket_id, 294 struct PP_Var data, 295 struct PP_Var address, 296 struct PP_Var port, 297 PP_Ext_Socket_WriteInfo_Dev* write_info, 298 struct PP_CompletionCallback callback); 299 /** 300 * This method applies to TCP sockets only. 301 * Listens for connections on the specified port and address. This effectively 302 * makes this a server socket, and client socket functions (Connect, Read, 303 * Write) can no longer be used on this socket. 304 * 305 * @param[in] instance A <code>PP_Instance</code>. 306 * @param[in] socket_id An integer <code>PP_Var</code>. The socket ID. 307 * @param[in] address A string <code>PP_Var</code>. The address of the local 308 * machine. 309 * @param[in] port An integer <code>PP_Var</code>. The port of the local 310 * machine. 311 * @param[in] backlog An undefined or integer <code>PP_Var</code>. Length of 312 * the socket's listen queue. 313 * @param[out] result An integer <code>PP_Var</code>. 314 * @param[in] callback A <code>PP_CompletionCallback</code> to be called 315 * upon completion. 316 * 317 * @return An error code from <code>pp_errors.h</code>. 318 */ 319 int32_t (*Listen)(PP_Instance instance, 320 struct PP_Var socket_id, 321 struct PP_Var address, 322 struct PP_Var port, 323 struct PP_Var backlog, 324 struct PP_Var* result, 325 struct PP_CompletionCallback callback); 326 /** 327 * This method applies to TCP sockets only. 328 * Registers a callback function to be called when a connection is accepted on 329 * this listening server socket. Listen must be called first. 330 * If there is already an active accept callback, this callback will be 331 * invoked immediately with an error as the resultCode. 332 * 333 * @param[in] instance A <code>PP_Instance</code>. 334 * @param[in] socket_id An integer <code>PP_Var</code>. The socket ID. 335 * @param[out] accept_info A <code>PP_Ext_Socket_AcceptInfo_Dev</code>. 336 * @param[in] callback A <code>PP_CompletionCallback</code> to be called 337 * upon completion. 338 * 339 * @return An error code from <code>pp_errors.h</code>. 340 */ 341 int32_t (*Accept)(PP_Instance instance, 342 struct PP_Var socket_id, 343 PP_Ext_Socket_AcceptInfo_Dev* accept_info, 344 struct PP_CompletionCallback callback); 345 /** 346 * Enables or disables the keep-alive functionality for a TCP connection. 347 * 348 * @param[in] instance A <code>PP_Instance</code>. 349 * @param[in] socket_id An integer <code>PP_Var</code>. The socket ID. 350 * @param[in] enable A boolean <code>PP_Var</code>. If true, enable keep-alive 351 * functionality. 352 * @param[in] delay An undefined or integer <code>PP_Var</code>. Set the delay 353 * seconds between the last data packet received and the first keepalive 354 * probe. Default is 0. 355 * @param[out] result A boolean <code>PP_Var</code>. 356 * @param[in] callback A <code>PP_CompletionCallback</code> to be called 357 * upon completion. 358 * 359 * @return An error code from <code>pp_errors.h</code>. 360 */ 361 int32_t (*SetKeepAlive)(PP_Instance instance, 362 struct PP_Var socket_id, 363 struct PP_Var enable, 364 struct PP_Var delay, 365 struct PP_Var* result, 366 struct PP_CompletionCallback callback); 367 /** 368 * Sets or clears <code>TCP_NODELAY</code> for a TCP connection. Nagle's 369 * algorithm will be disabled when <code>TCP_NODELAY</code> is set. 370 * 371 * @param[in] instance A <code>PP_Instance</code>. 372 * @param[in] socket_id An integer <code>PP_Var</code>. The socket ID. 373 * @param[in] no_delay A boolean <code>PP_Var</code>. 374 * @param[out] result A boolean <code>PP_Var</code>. 375 * @param[in] callback A <code>PP_CompletionCallback</code> to be called 376 * upon completion. 377 * 378 * @return An error code from <code>pp_errors.h</code>. 379 */ 380 int32_t (*SetNoDelay)(PP_Instance instance, 381 struct PP_Var socket_id, 382 struct PP_Var no_delay, 383 struct PP_Var* result, 384 struct PP_CompletionCallback callback); 385 /** 386 * Retrieves the state of the given socket. 387 * 388 * @param[in] instance A <code>PP_Instance</code>. 389 * @param[in] socket_id An integer <code>PP_Var</code>. The socket ID. 390 * @param[out] result A <code>PP_Ext_Socket_SocketInfo_Dev</code>. 391 * @param[in] callback A <code>PP_CompletionCallback</code> to be called 392 * upon completion. 393 * 394 * @return An error code from <code>pp_errors.h</code>. 395 */ 396 int32_t (*GetInfo)(PP_Instance instance, 397 struct PP_Var socket_id, 398 PP_Ext_Socket_SocketInfo_Dev* result, 399 struct PP_CompletionCallback callback); 400 /** 401 * Retrieves information about local adapters on this system. 402 * 403 * @param[in] instance A <code>PP_Instance</code>. 404 * @param[out] result A <code>PP_Ext_Socket_NetworkInterface_Dev_Array</code>. 405 * @param[in] callback A <code>PP_CompletionCallback</code> to be called 406 * upon completion. 407 * 408 * @return An error code from <code>pp_errors.h</code>. 409 */ 410 int32_t (*GetNetworkList)(PP_Instance instance, 411 PP_Ext_Socket_NetworkInterface_Dev_Array* result, 412 struct PP_CompletionCallback callback); 413 /** 414 * Joins the multicast group and starts to receive packets from that group. 415 * The socket must be of UDP type and must be bound to a local port before 416 * calling this method. 417 * 418 * @param[in] instance A <code>PP_Instance</code>. 419 * @param[in] socket_id An integer <code>PP_Var</code>. The socket ID. 420 * @param[in] address A string <code>PP_Var</code>. The group address to join. 421 * Domain names are not supported. 422 * @param[out] result An integer <code>PP_Var</code>. 423 * @param[in] callback A <code>PP_CompletionCallback</code> to be called 424 * upon completion. 425 * 426 * @return An error code from <code>pp_errors.h</code>. 427 */ 428 int32_t (*JoinGroup)(PP_Instance instance, 429 struct PP_Var socket_id, 430 struct PP_Var address, 431 struct PP_Var* result, 432 struct PP_CompletionCallback callback); 433 /** 434 * Leaves the multicast group previously joined using <code>JoinGroup</code>. 435 * It's not necessary to leave the multicast group before destroying the 436 * socket or exiting. This is automatically called by the OS. 437 * 438 * Leaving the group will prevent the router from sending multicast datagrams 439 * to the local host, presuming no other process on the host is still joined 440 * to the group. 441 * 442 * @param[in] instance A <code>PP_Instance</code>. 443 * @param[in] socket_id An integer <code>PP_Var</code>. The socket ID. 444 * @param[in] address A string <code>PP_Var</code>. The group address to 445 * leave. Domain names are not supported. 446 * @param[out] result An integer <code>PP_Var</code>. 447 * @param[in] callback A <code>PP_CompletionCallback</code> to be called 448 * upon completion. 449 * 450 * @return An error code from <code>pp_errors.h</code>. 451 */ 452 int32_t (*LeaveGroup)(PP_Instance instance, 453 struct PP_Var socket_id, 454 struct PP_Var address, 455 struct PP_Var* result, 456 struct PP_CompletionCallback callback); 457 /** 458 * Sets the time-to-live of multicast packets sent to the multicast group. 459 * 460 * Calling this method does not require multicast permissions. 461 * 462 * @param[in] instance A <code>PP_Instance</code>. 463 * @param[in] socket_id An integer <code>PP_Var</code>. The socket ID. 464 * @param[in] ttl An integer <code>PP_Var</code>. The time-to-live value. 465 * @param[out] result An integer <code>PP_Var</code>. 466 * @param[in] callback A <code>PP_CompletionCallback</code> to be called 467 * upon completion. 468 * 469 * @return An error code from <code>pp_errors.h</code>. 470 */ 471 int32_t (*SetMulticastTimeToLive)(PP_Instance instance, 472 struct PP_Var socket_id, 473 struct PP_Var ttl, 474 struct PP_Var* result, 475 struct PP_CompletionCallback callback); 476 /** 477 * Sets whether multicast packets sent from the host to the multicast group 478 * will be looped back to the host. 479 * 480 * Note: the behavior of <code>SetMulticastLoopbackMode</code> is slightly 481 * different between Windows and Unix-like systems. The inconsistency 482 * happens only when there is more than one application on the same host 483 * joined to the same multicast group while having different settings on 484 * multicast loopback mode. On Windows, the applications with loopback off 485 * will not RECEIVE the loopback packets; while on Unix-like systems, the 486 * applications with loopback off will not SEND the loopback packets to 487 * other applications on the same host. See MSDN: http://goo.gl/6vqbj 488 * 489 * Calling this method does not require multicast permissions. 490 * 491 * @param[in] instance A <code>PP_Instance</code>. 492 * @param[in] socket_id An integer <code>PP_Var</code>. The socket ID. 493 * @param[in] enabled A boolean <code>PP_Var</code>. Indicates whether to 494 * enable loopback mode. 495 * @param[out] result An integer <code>PP_Var</code>. 496 * @param[in] callback A <code>PP_CompletionCallback</code> to be called 497 * upon completion. 498 * 499 * @return An error code from <code>pp_errors.h</code>. 500 */ 501 int32_t (*SetMulticastLoopbackMode)(PP_Instance instance, 502 struct PP_Var socket_id, 503 struct PP_Var enabled, 504 struct PP_Var* result, 505 struct PP_CompletionCallback callback); 506 /** 507 * Gets the multicast group addresses the socket is currently joined to. 508 * 509 * @param[in] instance A <code>PP_Instance</code>. 510 * @param[in] socket_id An integer <code>PP_Var</code>. The socket ID. 511 * @param[out] groups An array <code>PP_Var</code> of string 512 * <code>PP_Var</code>s. 513 * @param[in] callback A <code>PP_CompletionCallback</code> to be called 514 * upon completion. 515 * 516 * @return An error code from <code>pp_errors.h</code>. 517 */ 518 int32_t (*GetJoinedGroups)(PP_Instance instance, 519 struct PP_Var socket_id, 520 struct PP_Var* groups, 521 struct PP_CompletionCallback callback); 522 }; 523 524 typedef struct PPB_Ext_Socket_Dev_0_2 PPB_Ext_Socket_Dev; 525 526 struct PPB_Ext_Socket_Dev_0_1 { 527 int32_t (*Create)(PP_Instance instance, 528 PP_Ext_Socket_SocketType_Dev type, 529 PP_Ext_Socket_CreateOptions_Dev options, 530 PP_Ext_Socket_CreateInfo_Dev* create_info, 531 struct PP_CompletionCallback callback); 532 void (*Destroy)(PP_Instance instance, struct PP_Var socket_id); 533 int32_t (*Connect)(PP_Instance instance, 534 struct PP_Var socket_id, 535 struct PP_Var hostname, 536 struct PP_Var port, 537 struct PP_Var* result, 538 struct PP_CompletionCallback callback); 539 int32_t (*Bind)(PP_Instance instance, 540 struct PP_Var socket_id, 541 struct PP_Var address, 542 struct PP_Var port, 543 struct PP_Var* result, 544 struct PP_CompletionCallback callback); 545 void (*Disconnect)(PP_Instance instance, struct PP_Var socket_id); 546 int32_t (*Read)(PP_Instance instance, 547 struct PP_Var socket_id, 548 struct PP_Var buffer_size, 549 PP_Ext_Socket_ReadInfo_Dev* read_info, 550 struct PP_CompletionCallback callback); 551 int32_t (*Write)(PP_Instance instance, 552 struct PP_Var socket_id, 553 struct PP_Var data, 554 PP_Ext_Socket_WriteInfo_Dev* write_info, 555 struct PP_CompletionCallback callback); 556 int32_t (*RecvFrom)(PP_Instance instance, 557 struct PP_Var socket_id, 558 struct PP_Var buffer_size, 559 PP_Ext_Socket_RecvFromInfo_Dev* recv_from_info, 560 struct PP_CompletionCallback callback); 561 int32_t (*SendTo)(PP_Instance instance, 562 struct PP_Var socket_id, 563 struct PP_Var data, 564 struct PP_Var address, 565 struct PP_Var port, 566 PP_Ext_Socket_WriteInfo_Dev* write_info, 567 struct PP_CompletionCallback callback); 568 int32_t (*Listen)(PP_Instance instance, 569 struct PP_Var socket_id, 570 struct PP_Var address, 571 struct PP_Var port, 572 struct PP_Var backlog, 573 struct PP_Var* result, 574 struct PP_CompletionCallback callback); 575 int32_t (*Accept)(PP_Instance instance, 576 struct PP_Var socket_id, 577 PP_Ext_Socket_AcceptInfo_Dev* accept_info, 578 struct PP_CompletionCallback callback); 579 int32_t (*SetKeepAlive)(PP_Instance instance, 580 struct PP_Var socket_id, 581 struct PP_Var enable, 582 struct PP_Var delay, 583 struct PP_Var* result, 584 struct PP_CompletionCallback callback); 585 int32_t (*SetNoDelay)(PP_Instance instance, 586 struct PP_Var socket_id, 587 struct PP_Var no_delay, 588 struct PP_Var* result, 589 struct PP_CompletionCallback callback); 590 int32_t (*GetInfo)(PP_Instance instance, 591 struct PP_Var socket_id, 592 PP_Ext_Socket_SocketInfo_Dev* result, 593 struct PP_CompletionCallback callback); 594 int32_t (*GetNetworkList)(PP_Instance instance, 595 PP_Ext_Socket_NetworkInterface_Dev_Array* result, 596 struct PP_CompletionCallback callback); 597 }; 598 /** 599 * @} 600 */ 601 602 #endif /* PPAPI_C_EXTENSIONS_DEV_PPB_EXT_SOCKET_DEV_H_ */ 603 604