| Index: extensions/common/api/copresence_socket.idl
|
| diff --git a/extensions/common/api/copresence_socket.idl b/extensions/common/api/copresence_socket.idl
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..196289b494947f3ae4ad0264d6a892af20852114
|
| --- /dev/null
|
| +++ b/extensions/common/api/copresence_socket.idl
|
| @@ -0,0 +1,135 @@
|
| +// Copyright 2014 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.
|
| +
|
| +// Use the <code>chrome.copresenceSocket</code> API to create persistent
|
| +// sockets to send data to and receive from data nearby devices.
|
| +namespace copresenceSocket {
|
| +
|
| + enum TransportType {
|
| + // Only use the internet as the transport.
|
| + online,
|
| + // Only use an offline transport.
|
| + offline
|
| + };
|
| +
|
| + // The properties for the peer created by the $ref:createPeer function.
|
| + [noinline_doc] dictionary ConnectionProperties {
|
| + // Flag indicating whether the socket should use a low latency transport
|
| + // (if available).
|
| + boolean? lowLatency;
|
| +
|
| + // Flag to force the socket to use a particular type of transport.
|
| + TransportType? type;
|
| + };
|
| +
|
| +
|
| + // Result of the <code>createPeer</code> call.
|
| + [noinline_doc] dictionary PeerInfo {
|
| + // The ID of the newly created peer.
|
| + long peerId;
|
| +
|
| + // An opaque string containing the locator data for this peer. This
|
| + // locator is needed to connect to this socket.
|
| + DOMString locator;
|
| + };
|
| +
|
| + // Data from an <code>onReceive</code> event.
|
| + [noinline_doc] dictionary ReceiveInfo {
|
| + // The socket identifier.
|
| + long socketId;
|
| +
|
| + // The data received.
|
| + ArrayBuffer data;
|
| + };
|
| +
|
| + // Status of a socket operation.
|
| + enum SocketStatus {
|
| + // There was no error in the previous operation.
|
| + no_error,
|
| +
|
| + // The socket was disconnected.
|
| + disconnected,
|
| +
|
| + // The socket id provided is invalid.
|
| + invalid_socket,
|
| +
|
| + // There was a failure during connection.
|
| + connect_failure,
|
| +
|
| + // There was an error while trying to send data.
|
| + send_failure,
|
| +
|
| + // There was an error while trying to receive data.
|
| + receive_failure
|
| + };
|
| +
|
| + // Callback from the <code>createPeer</code> method.
|
| + // |peerInfo| : The result of the socket creation.
|
| + callback CreateCallback = void (PeerInfo peerInfo);
|
| +
|
| + // Callback from the <code>connectToPeer</code> method.
|
| + // |socketId| : ID of the socket created between the local and remote peers.
|
| + // This ID is only valid if status == no_error.
|
| + // |status| : Status of the connect operation.
|
| + callback ConnectCallback = void (long socketId, SocketStatus status);
|
| +
|
| + // Callback from the <code>send</code> method.
|
| + // |status| : Status of the send operation.
|
| + callback SendCallback = void (SocketStatus status);
|
| +
|
| + // Callback from the <code>disconnect</code> method.
|
| + callback DisconnectCallback = void ();
|
| +
|
| + // These functions all report failures via chrome.runtime.lastError.
|
| + interface Functions {
|
| + // Peer functions.
|
| +
|
| + // Creates a peer that can be connected to by a nearby devices.
|
| + // |callback| : Called when the peer has been created.
|
| + static void createPeer(CreateCallback callback);
|
| +
|
| + // Destroys the peer. This will close any connections to this peer
|
| + // from remote hosts and will prevent any further connections to it.
|
| + // |peerId|: Peer ID returned by <code>createPeer</code>.
|
| + static void destroyPeer(long peerId);
|
| +
|
| + // Socket functions.
|
| +
|
| + // Sends data on the given Copresence socket.
|
| + // |socketId| : The socket identifier.
|
| + // |data| : The data to send.
|
| + // |callback| : Called when the <code>send</code> operation completes.
|
| + static void send(long socketId, ArrayBuffer data,
|
| + optional SendCallback callback);
|
| +
|
| + // Disconnects and destroys a socket. The socket id is no longer valid and any
|
| + // pending send callbacks are cancelled as soon at the function is called.
|
| + // However, the connection is guaranteed to be closed only when the callback
|
| + // is invoked.
|
| + // |socketId| : The socket identifier.
|
| + // |callback| : Called when the <code>disconnect</code> operation completes.
|
| + static void disconnect(long socketId,
|
| + optional DisconnectCallback callback);
|
| + };
|
| +
|
| + interface Events {
|
| + // Event raised when data has been received for a given socket.
|
| + // |info| : The event data.
|
| + static void onReceive(ReceiveInfo info);
|
| +
|
| + // Event raised when a peer receives a new connection. A new socket is
|
| + // created and the id is passed to this event via socketId.
|
| + // |peerId| : ID of the peer that received this connection.
|
| + // |socketId| : ID of the new socket that was created which can be used to
|
| + // communicate on this connection.
|
| + static void onConnected(long peerId, long socketId);
|
| +
|
| + // Event raised when there is a status update for a socket. This can be an
|
| + // error or disconnection. After event is raised, since there has either
|
| + // been an error or disconnection, no more <code>onReceive</code> events
|
| + // are raised for this socket and the socketId is invalidated.
|
| + // |status| : The status update for the socket.
|
| + static void onSocketStatusUpdated(long socketId, SocketStatus status);
|
| + };
|
| +};
|
|
|