summaryrefslogtreecommitdiffstats
path: root/ppapi/api/ppb_tcp_socket.idl
diff options
context:
space:
mode:
authoryzshen@chromium.org <yzshen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-09-20 15:29:13 +0000
committeryzshen@chromium.org <yzshen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-09-20 15:29:13 +0000
commit92576792823018d937fc58e74267b0d30663e459 (patch)
treea80543169bea29b7fee7346387a1a0e1d6b34090 /ppapi/api/ppb_tcp_socket.idl
parent5603a6cf5fb7197f509b894e45bdc733e720b28a (diff)
downloadchromium_src-92576792823018d937fc58e74267b0d30663e459.zip
chromium_src-92576792823018d937fc58e74267b0d30663e459.tar.gz
chromium_src-92576792823018d937fc58e74267b0d30663e459.tar.bz2
PPB_TCPSocket: add support for TCP server socket operations.
BUG=262601 TEST=new tests in test_tcp_socket. Review URL: https://chromiumcodereview.appspot.com/24195004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@224383 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ppapi/api/ppb_tcp_socket.idl')
-rw-r--r--ppapi/api/ppb_tcp_socket.idl97
1 files changed, 85 insertions, 12 deletions
diff --git a/ppapi/api/ppb_tcp_socket.idl b/ppapi/api/ppb_tcp_socket.idl
index 833879c..6c43712 100644
--- a/ppapi/api/ppb_tcp_socket.idl
+++ b/ppapi/api/ppb_tcp_socket.idl
@@ -7,10 +7,9 @@
* This file defines the <code>PPB_TCPSocket</code> interface.
*/
-[generate_thunk]
-
label Chrome {
- M29 = 1.0
+ M29 = 1.0,
+ M31 = 1.1
};
/**
@@ -45,14 +44,23 @@ enum PP_TCPSocket_Option {
* size. Even if <code>SetOption()</code> succeeds, the browser doesn't
* guarantee it will conform to the size.
*/
- PP_TCPSOCKET_OPTION_RECV_BUFFER_SIZE = 2
+ PP_TCPSOCKET_OPTION_RECV_BUFFER_SIZE = 2,
+
+ /**
+ * Allows the socket to share the local address to which it will be bound.
+ * Value's type should be <code>PP_VARTYPE_BOOL</code>.
+ * This option can only be set before calling <code>Bind()</code>.
+ * Supported since version 1.1.
+ */
+ PP_TCPSOCKET_OPTION_ADDRESS_REUSE = 3
};
/**
* The <code>PPB_TCPSocket</code> interface provides TCP socket operations.
*
* Permissions: Apps permission <code>socket</code> with subrule
- * <code>tcp-connect</code> is required for <code>Connect()</code>.
+ * <code>tcp-connect</code> is required for <code>Connect()</code>; subrule
+ * <code>tcp-listen</code> is required for <code>Listen()</code>.
* For more details about network communication permissions, please see:
* http://developer.chrome.com/apps/app_network.html
*/
@@ -79,7 +87,27 @@ interface PPB_TCPSocket {
PP_Bool IsTCPSocket([in] PP_Resource resource);
/**
- * Connects the socket to the given address.
+ * Binds the socket to the given address. The socket must not be bound.
+ *
+ * @param[in] tcp_socket A <code>PP_Resource</code> corresponding to a TCP
+ * socket.
+ * @param[in] addr A <code>PPB_NetAddress</code> resource.
+ * @param[in] callback A <code>PP_CompletionCallback</code> to be called upon
+ * completion.
+ *
+ * @return An int32_t containing an error code from <code>pp_errors.h</code>,
+ * including (but not limited to):
+ * - <code>PP_ERROR_ADDRESS_IN_USE</code>: the address is already in use.
+ * - <code>PP_ERROR_ADDRESS_INVALID</code>: the address is invalid.
+ */
+ [version=1.1]
+ int32_t Bind([in] PP_Resource tcp_socket,
+ [in] PP_Resource addr,
+ [in] PP_CompletionCallback callback);
+
+ /**
+ * Connects the socket to the given address. The socket must not be listening.
+ * Binding the socket beforehand is optional.
*
* @param[in] tcp_socket A <code>PP_Resource</code> corresponding to a TCP
* socket.
@@ -98,13 +126,18 @@ interface PPB_TCPSocket {
* - <code>PP_ERROR_CONNECTION_FAILED</code>: the connection attempt failed.
* - <code>PP_ERROR_CONNECTION_TIMEDOUT</code>: the connection attempt timed
* out.
+ *
+ * If the socket is listening/connected or has a pending listen/connect
+ * request, <code>Connect()</code> will fail without starting a connection
+ * attempt. Otherwise, any failure during the connection attempt will cause
+ * the socket to be closed.
*/
int32_t Connect([in] PP_Resource tcp_socket,
[in] PP_Resource addr,
[in] PP_CompletionCallback callback);
/**
- * Gets the local address of the socket, if it is connected.
+ * Gets the local address of the socket, if it is bound.
*
* @param[in] tcp_socket A <code>PP_Resource</code> corresponding to a TCP
* socket.
@@ -162,13 +195,53 @@ interface PPB_TCPSocket {
[in] str_t buffer,
[in] int32_t bytes_to_write,
[in] PP_CompletionCallback callback);
+ /**
+ * Starts listening. The socket must be bound and not connected.
+ *
+ * @param[in] tcp_socket A <code>PP_Resource</code> corresponding to a TCP
+ * socket.
+ * @param[in] backlog A hint to determine the maximum length to which the
+ * queue of pending connections may grow.
+ * @param[in] callback A <code>PP_CompletionCallback</code> to be called upon
+ * completion.
+ *
+ * @return An int32_t containing an error code from <code>pp_errors.h</code>,
+ * including (but not limited to):
+ * - <code>PP_ERROR_NOACCESS</code>: the caller doesn't have required
+ * permissions.
+ * - <code>PP_ERROR_ADDRESS_IN_USE</code>: Another socket is already listening
+ * on the same port.
+ */
+ [version=1.1]
+ int32_t Listen([in] PP_Resource tcp_socket,
+ [in] int32_t backlog,
+ [in] PP_CompletionCallback callback);
+
+ /**
+ * Accepts a connection. The socket must be listening.
+ *
+ * @param[in] tcp_socket A <code>PP_Resource</code> corresponding to a TCP
+ * socket.
+ * @param[out] accepted_tcp_socket Stores the accepted TCP socket on success.
+ * @param[in] callback A <code>PP_CompletionCallback</code> to be called upon
+ * completion.
+ *
+ * @return An int32_t containing an error code from <code>pp_errors.h</code>,
+ * including (but not limited to):
+ * - <code>PP_ERROR_CONNECTION_ABORTED</code>: A connection has been aborted.
+ */
+ [version=1.1]
+ int32_t Accept([in] PP_Resource tcp_socket,
+ [out] PP_Resource accepted_tcp_socket,
+ [in] PP_CompletionCallback callback);
/**
- * Cancels all pending reads and writes and disconnects the socket. Any
- * pending callbacks will still run, reporting <code>PP_ERROR_ABORTED</code>
- * if pending IO was interrupted. After a call to this method, no output
- * buffer pointers passed into previous <code>Read()</code> calls will be
- * accessed. It is not valid to call <code>Connect()</code> again.
+ * Cancels all pending operations and closes the socket. Any pending callbacks
+ * will still run, reporting <code>PP_ERROR_ABORTED</code> if pending IO was
+ * interrupted. After a call to this method, no output buffer pointers passed
+ * into previous <code>Read()</code> or <code>Accept()</code> calls will be
+ * accessed. It is not valid to call <code>Connect()</code> or
+ * <code>Listen()</code> again.
*
* The socket is implicitly closed if it is destroyed, so you are not required
* to call this method.