Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1217)

Unified Diff: extensions/common/api/copresence_socket.idl

Issue 610633002: Prototype for copresenceSockets. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: format specifiers build fix Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « extensions/common/api/_api_features.json ('k') | extensions/common/api/schemas.gypi » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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..c26d854b646f27cf491afe833ada8e37b190f726
--- /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);
+ };
+};
« no previous file with comments | « extensions/common/api/_api_features.json ('k') | extensions/common/api/schemas.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698