// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // File-level comment to appease parser. Eventually this will not be necessary. [nodoc] namespace experimental.socket { enum SocketType { tcp, udp }; // The socket options. dictionary CreateOptions { // The schema generator does not support dictionaries without any fields. // Ignore this field. [nodoc] long? dummyValue; }; dictionary CreateInfo { // The id of the newly created socket. long socketId; }; callback CreateCallback = void (CreateInfo createInfo); callback ConnectCallback = void (long result); callback BindCallback = void (long result); dictionary ReadInfo { // The resultCode returned from the underlying read() call. long resultCode; ArrayBuffer data; }; callback ReadCallback = void (ReadInfo readInfo); dictionary WriteInfo { // The number of bytes sent, or a negative error code. long bytesWritten; }; callback WriteCallback = void (WriteInfo writeInfo); dictionary RecvFromInfo { // The resultCode returned from the underlying read() call. long resultCode; ArrayBuffer data; DOMString address; long port; }; callback RecvFromCallback = void (RecvFromInfo recvFromInfo); callback SendToCallback = void (WriteInfo writeInfo); callback SetKeepAliveCallback = void (boolean result); callback SetNoDelayCallback = void (boolean result); interface Functions { // Creates a socket of the specified type that will connect to the specified // remote machine. // |type| : The type of socket to create. Must be tcp or // udp. // |options| : The socket options. // |callback| : Called when the socket has been created. static void create(SocketType type, optional CreateOptions options, CreateCallback callback); // Destroys the socket. Each socket created should be destroyed after use. // |socketId| : The socketId. static void destroy(long socketId); // Connects the socket to the remote machine. // |socketId| : The socketId. // |hostname| : The hostname or IP address of the remote machine. // |port| : The port of the remote machine. // |callback| : Called when the connection attempt is complete. static void connect(long socketId, DOMString hostname, long port, ConnectCallback callback); // Binds the local address for socket. Currently, it does not support // TCP socket. // |socketId| : The socketId. // |address| : The address of the local machine. // |port| : The port of the local machine. // |callback| : Called when the bind attempt is complete. static void bind(long socketId, DOMString address, long port, BindCallback callback); // Disconnects the socket. For UDP sockets, disconnect is a // non-operation but is safe to call. // |socketId| : The socketId. static void disconnect(long socketId); // Reads data from the given socket. // |socketId| : The socketId. // |bufferSize| : The read buffer size. // |callback| : Delivers data that was available to be read without // blocking. static void read(long socketId, optional long bufferSize, ReadCallback callback); // Writes data on the given socket. // |socketId| : The socketId. // |data| : The data to write. // |callback| : Called when the first of any of the following happens: the // write operation completes without blocking, the write operation blocked // before completion (in which case onEvent() will eventually be called with // a writeComplete event), or an error occurred. static void write(long socketId, ArrayBuffer data, WriteCallback callback); // Reads data from the given socket. // |socketId| : The socketId. // |bufferSize| : The receive buffer size. // |callback| : Delivers data that was available to be read without // blocking. static void recvFrom(long socketId, optional long bufferSize, RecvFromCallback callback); // Writes data on the given socket. // |socketId| : The socketId. // |data| : The data to write. // |address| : The address of the remote machine. // |port| : The port of the remote machine. // |callback| : Called when the first of any of the following happens: the // write operation completes without blocking, the write operation blocked // before completion (in which case onEvent() will eventually be called with // a writeComplete event), or an error occurred. static void sendTo(long socketId, ArrayBuffer data, DOMString address, long port, SendToCallback callback); // Enable/disable keep-alive functionality for a TCP connection. // |socketId| : The socketId. // |enable| : If true, enable keep-alive functionality. // |delay| : Set the delay seconds between the last data packet received // and the first keepalive probe. Default is 0. // |callback| : Called when the setKeepAlive attempt is complete. static void setKeepAlive(long socketId, boolean enable, optional long delay, SetKeepAliveCallback callback); // Enable/disable Nagle algorithm. // |socketId| : The socketId. // |noDelay| : If true, disable Nagle algorithm. // |callback| : Called when the setNoDelay attempt is complete. static void setNoDelay(long socketId, boolean noDelay, SetNoDelayCallback callback); }; };