1eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch/* Copyright 2013 The Chromium Authors. All rights reserved. 2eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * Use of this source code is governed by a BSD-style license that can be 3eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * found in the LICENSE file. 4eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch */ 5eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 6eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch/* From ppb_udp_socket.idl modified Sat Jun 22 10:56:26 2013. */ 7eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 8eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#ifndef PPAPI_C_PPB_UDP_SOCKET_H_ 9eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#define PPAPI_C_PPB_UDP_SOCKET_H_ 10eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 11eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "ppapi/c/pp_bool.h" 12eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "ppapi/c/pp_completion_callback.h" 13eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "ppapi/c/pp_instance.h" 14eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "ppapi/c/pp_macros.h" 15eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "ppapi/c/pp_resource.h" 16eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "ppapi/c/pp_stdint.h" 17eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "ppapi/c/pp_var.h" 18eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 19eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#define PPB_UDPSOCKET_INTERFACE_1_0 "PPB_UDPSocket;1.0" 20eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#define PPB_UDPSOCKET_INTERFACE PPB_UDPSOCKET_INTERFACE_1_0 21eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 22eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch/** 23eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * @file 24eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * This file defines the <code>PPB_UDPSocket</code> interface. 25eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch */ 26eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 27eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 28eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch/** 29eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * @addtogroup Enums 30eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * @{ 31eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch */ 32eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch/** 33eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * Option names used by <code>SetOption()</code>. 34eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch */ 35eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochtypedef enum { 36eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch /** 37eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * Allows the socket to share the local address to which it will be bound with 38eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * other processes. Value's type should be <code>PP_VARTYPE_BOOL</code>. 39eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * This option can only be set before calling <code>Bind()</code>. 40eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch */ 41eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch PP_UDPSOCKET_OPTION_ADDRESS_REUSE = 0, 42eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch /** 43eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * Allows sending and receiving packets to and from broadcast addresses. 44eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * Value's type should be <code>PP_VARTYPE_BOOL</code>. 45eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * This option can only be set before calling <code>Bind()</code>. 46eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch */ 47eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch PP_UDPSOCKET_OPTION_BROADCAST = 1, 48eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch /** 49eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * Specifies the total per-socket buffer space reserved for sends. Value's 50eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * type should be <code>PP_VARTYPE_INT32</code>. 51eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * This option can only be set after a successful <code>Bind()</code> call. 52eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * 53eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * Note: This is only treated as a hint for the browser to set the buffer 54eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * size. Even if <code>SetOption()</code> succeeds, the browser doesn't 55eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * guarantee it will conform to the size. 56eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch */ 57eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch PP_UDPSOCKET_OPTION_SEND_BUFFER_SIZE = 2, 58eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch /** 59eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * Specifies the total per-socket buffer space reserved for receives. Value's 60eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * type should be <code>PP_VARTYPE_INT32</code>. 61eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * This option can only be set after a successful <code>Bind()</code> call. 62eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * 63eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * Note: This is only treated as a hint for the browser to set the buffer 64eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * size. Even if <code>SetOption()</code> succeeds, the browser doesn't 65eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * guarantee it will conform to the size. 66eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch */ 67eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch PP_UDPSOCKET_OPTION_RECV_BUFFER_SIZE = 3 68eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} PP_UDPSocket_Option; 69eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochPP_COMPILE_ASSERT_SIZE_IN_BYTES(PP_UDPSocket_Option, 4); 70eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch/** 71eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * @} 72eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch */ 73eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 74eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch/** 75eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * @addtogroup Interfaces 76eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * @{ 77eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch */ 78eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch/** 79eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * The <code>PPB_UDPSocket</code> interface provides UDP socket operations. 80eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * 81eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * Permissions: Apps permission <code>socket</code> with subrule 82eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * <code>udp-bind</code> is required for <code>Bind()</code>; subrule 83eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * <code>udp-send-to</code> is required for <code>SendTo()</code>. 84eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * For more details about network communication permissions, please see: 85eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * http://developer.chrome.com/apps/app_network.html 86eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch */ 87eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochstruct PPB_UDPSocket_1_0 { 88eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch /** 89eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * Creates a UDP socket resource. 90eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * 91eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * @param[in] instance A <code>PP_Instance</code> identifying one instance of 92eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * a module. 93eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * 94eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * @return A <code>PP_Resource</code> corresponding to a UDP socket or 0 95eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * on failure. 96eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch */ 97eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch PP_Resource (*Create)(PP_Instance instance); 98eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch /** 99eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * Determines if a given resource is a UDP socket. 100eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * 101eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * @param[in] resource A <code>PP_Resource</code> to check. 102eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * 103eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * @return <code>PP_TRUE</code> if the input is a <code>PPB_UDPSocket</code> 104eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * resource; <code>PP_FALSE</code> otherwise. 105eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch */ 106eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch PP_Bool (*IsUDPSocket)(PP_Resource resource); 107eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch /** 108eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * Binds the socket to the given address. 109eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * 110eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * @param[in] udp_socket A <code>PP_Resource</code> corresponding to a UDP 111eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * socket. 112eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * @param[in] addr A <code>PPB_NetAddress</code> resource. 113eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * @param[in] callback A <code>PP_CompletionCallback</code> to be called upon 114eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * completion. 115eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * 116eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * @return An int32_t containing an error code from <code>pp_errors.h</code>. 117eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * <code>PP_ERROR_NOACCESS</code> will be returned if the caller doesn't have 118eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * required permissions. <code>PP_ERROR_ADDRESS_IN_USE</code> will be returned 119eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * if the address is already in use. 120eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch */ 121eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int32_t (*Bind)(PP_Resource udp_socket, 122eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch PP_Resource addr, 123eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch struct PP_CompletionCallback callback); 124eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch /** 125eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * Gets the address that the socket is bound to. The socket must be bound. 126eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * 127eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * @param[in] udp_socket A <code>PP_Resource</code> corresponding to a UDP 128eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * socket. 129eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * 130eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * @return A <code>PPB_NetAddress</code> resource on success or 0 on failure. 131eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch */ 132eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch PP_Resource (*GetBoundAddress)(PP_Resource udp_socket); 133eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch /** 134eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * Receives data from the socket and stores the source address. The socket 135eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * must be bound. 136eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * 137eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * @param[in] udp_socket A <code>PP_Resource</code> corresponding to a UDP 138eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * socket. 139eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * @param[out] buffer The buffer to store the received data on success. It 140eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * must be at least as large as <code>num_bytes</code>. 141eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * @param[in] num_bytes The number of bytes to receive. 142eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * @param[out] addr A <code>PPB_NetAddress</code> resource to store the source 143eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * address on success. 144eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * @param[in] callback A <code>PP_CompletionCallback</code> to be called upon 145eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * completion. 146eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * 147eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * @return A non-negative number on success to indicate how many bytes have 148eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * been received; otherwise, an error code from <code>pp_errors.h</code>. 149eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch */ 150eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int32_t (*RecvFrom)(PP_Resource udp_socket, 151eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch char* buffer, 152eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int32_t num_bytes, 153eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch PP_Resource* addr, 154eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch struct PP_CompletionCallback callback); 155eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch /** 156eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * Sends data to a specific destination. The socket must be bound. 157eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * 158eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * @param[in] udp_socket A <code>PP_Resource</code> corresponding to a UDP 159eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * socket. 160eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * @param[in] buffer The buffer containing the data to send. 161eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * @param[in] num_bytes The number of bytes to send. 162eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * @param[in] addr A <code>PPB_NetAddress</code> resource holding the 163eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * destination address. 164eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * @param[in] callback A <code>PP_CompletionCallback</code> to be called upon 165eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * completion. 166eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * 167eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * @return A non-negative number on success to indicate how many bytes have 168eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * been sent; otherwise, an error code from <code>pp_errors.h</code>. 169eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * <code>PP_ERROR_NOACCESS</code> will be returned if the caller doesn't have 170eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * required permissions. 171eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch */ 172eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int32_t (*SendTo)(PP_Resource udp_socket, 173eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const char* buffer, 174eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int32_t num_bytes, 175eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch PP_Resource addr, 176eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch struct PP_CompletionCallback callback); 177eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch /** 178eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * Cancels all pending reads and writes, and closes the socket. Any pending 179eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * callbacks will still run, reporting <code>PP_ERROR_ABORTED</code> if 180eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * pending IO was interrupted. After a call to this method, no output 181eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * parameters passed into previous <code>RecvFrom()</code> calls will be 182eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * accessed. It is not valid to call <code>Bind()</code> again. 183eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * 184eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * The socket is implicitly closed if it is destroyed, so you are not 185eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * required to call this method. 186eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * 187eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * @param[in] udp_socket A <code>PP_Resource</code> corresponding to a UDP 188eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * socket. 189eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch */ 190eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch void (*Close)(PP_Resource udp_socket); 191eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch /** 192eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * Sets a socket option on the UDP socket. 193eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * Please see the <code>PP_UDPSocket_Option</code> description for option 194eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * names, value types and allowed values. 195eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * 196eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * @param[in] udp_socket A <code>PP_Resource</code> corresponding to a UDP 197eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * socket. 198eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * @param[in] name The option to set. 199eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * @param[in] value The option value to set. 200eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * @param[in] callback A <code>PP_CompletionCallback</code> to be called upon 201eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * completion. 202eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * 203eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * @return An int32_t containing an error code from <code>pp_errors.h</code>. 204eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch */ 205eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int32_t (*SetOption)(PP_Resource udp_socket, 206eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch PP_UDPSocket_Option name, 207eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch struct PP_Var value, 208eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch struct PP_CompletionCallback callback); 209eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}; 210eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 211eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochtypedef struct PPB_UDPSocket_1_0 PPB_UDPSocket; 212eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch/** 213eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * @} 214eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch */ 215eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 216eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#endif /* PPAPI_C_PPB_UDP_SOCKET_H_ */ 217eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 218