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.
7 * This file defines the <code>PPB_UDPSocket_Private</code> interface.
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
21 PP_UDPSOCKETFEATURE_PRIVATE_ADDRESS_REUSE
= 0,
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,
27 // Special value for counting the number of available
28 // features. Should not be passed to SetSocketFeature().
29 PP_UDPSOCKETFEATURE_PRIVATE_COUNT
= 2
32 interface PPB_UDPSocket_Private
{
34 * Creates a UDP socket resource.
36 PP_Resource Create
([in] PP_Instance instance_id
);
39 * Determines if a given resource is a UDP socket.
41 PP_Bool IsUDPSocket
([in] PP_Resource resource_id
);
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.
53 int32_t SetSocketFeature
([in] PP_Resource udp_socket
,
54 [in] PP_UDPSocketFeature_Private name
,
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);
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.
67 PP_Bool GetBoundAddress
([in] PP_Resource udp_socket
,
68 [out] PP_NetAddress_Private addr
);
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.
75 int32_t RecvFrom
([in] PP_Resource udp_socket
,
77 [in] int32_t num_bytes
,
78 [in] PP_CompletionCallback
callback);
80 /* Upon successful completion of RecvFrom, the address that the data
81 * was received from is stored in |addr|.
83 PP_Bool GetRecvFromAddress
([in] PP_Resource udp_socket
,
84 [out] PP_NetAddress_Private addr
);
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.
90 int32_t SendTo
([in] PP_Resource udp_socket
,
92 [in] int32_t num_bytes
,
93 [in] PP_NetAddress_Private addr
,
94 [in] PP_CompletionCallback
callback);
96 /* Cancels all pending reads and writes, and closes the socket. */
97 void Close
([in] PP_Resource udp_socket
);