1 /* Copyright (c) 2012 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 /** 7 * This file defines the <code>PPB_UDPSocket_Private</code> interface. 8 */ 9 10 label Chrome { 11 M17 = 0.2, 12 M19 = 0.3, 13 M23 = 0.4 14 }; 15 16 [assert_size(4)] 17 enum PP_UDPSocketFeature_Private { 18 // Allow the socket to share the local address to which socket will 19 // be bound with other processes. Value's type should be 20 // PP_VARTYPE_BOOL. 21 PP_UDPSOCKETFEATURE_PRIVATE_ADDRESS_REUSE = 0, 22 23 // Allow sending and receiving packets sent to and from broadcast 24 // addresses. Value's type should be PP_VARTYPE_BOOL. 25 PP_UDPSOCKETFEATURE_PRIVATE_BROADCAST = 1, 26 27 // Special value for counting the number of available 28 // features. Should not be passed to SetSocketFeature(). 29 PP_UDPSOCKETFEATURE_PRIVATE_COUNT = 2 30 }; 31 32 interface PPB_UDPSocket_Private { 33 /** 34 * Creates a UDP socket resource. 35 */ 36 PP_Resource Create([in] PP_Instance instance_id); 37 38 /** 39 * Determines if a given resource is a UDP socket. 40 */ 41 PP_Bool IsUDPSocket([in] PP_Resource resource_id); 42 43 /** 44 * Sets a socket feature to |udp_socket|. Should be called before 45 * Bind(). Possible values for |name|, |value| and |value|'s type 46 * are described in PP_UDPSocketFeature_Private description. If no 47 * error occurs, returns PP_OK. Otherwise, returns 48 * PP_ERROR_BADRESOURCE (if bad |udp_socket| provided), 49 * PP_ERROR_BADARGUMENT (if bad name/value/value's type provided) 50 * or PP_ERROR_FAILED in the case of internal errors. 51 */ 52 [version=0.4] 53 int32_t SetSocketFeature([in] PP_Resource udp_socket, 54 [in] PP_UDPSocketFeature_Private name, 55 [in] PP_Var value); 56 57 /* Creates a socket and binds to the address given by |addr|. */ 58 int32_t Bind([in] PP_Resource udp_socket, 59 [in] PP_NetAddress_Private addr, 60 [in] PP_CompletionCallback callback); 61 62 /* Returns the address that the socket has bound to. A successful 63 * call to Bind must be called first. Returns PP_FALSE if Bind 64 * fails, or if Close has been called. 65 */ 66 [version=0.3] 67 PP_Bool GetBoundAddress([in] PP_Resource udp_socket, 68 [out] PP_NetAddress_Private addr); 69 70 /* Performs a non-blocking recvfrom call on socket. 71 * Bind must be called first. |callback| is invoked when recvfrom 72 * reads data. You must call GetRecvFromAddress to recover the 73 * address the data was retrieved from. 74 */ 75 int32_t RecvFrom([in] PP_Resource udp_socket, 76 [out] str_t buffer, 77 [in] int32_t num_bytes, 78 [in] PP_CompletionCallback callback); 79 80 /* Upon successful completion of RecvFrom, the address that the data 81 * was received from is stored in |addr|. 82 */ 83 PP_Bool GetRecvFromAddress([in] PP_Resource udp_socket, 84 [out] PP_NetAddress_Private addr); 85 86 /* Performs a non-blocking sendto call on the socket created and 87 * bound(has already called Bind). The callback |callback| is 88 * invoked when sendto completes. 89 */ 90 int32_t SendTo([in] PP_Resource udp_socket, 91 [in] str_t buffer, 92 [in] int32_t num_bytes, 93 [in] PP_NetAddress_Private addr, 94 [in] PP_CompletionCallback callback); 95 96 /* Cancels all pending reads and writes, and closes the socket. */ 97 void Close([in] PP_Resource udp_socket); 98 }; 99