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

Side by Side Diff: chrome/common/extensions/api/sockets_udp.idl

Issue 183893041: Move sockets APIs out of src/chrome (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 9 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright 2013 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.
4
5 // Use the <code>chrome.sockets.udp</code> API to send and receive data over the
6 // network using UDP connections. This API supersedes the UDP functionality
7 // previously found in the "socket" API.
8 namespace sockets.udp {
9 // The socket properties specified in the <code>create</code> or
10 // <code>update</code> function. Each property is optional. If a property
11 // value is not specified, a default value is used when calling
12 // <code>create</code>, or the existing value if preserved when calling
13 // <code>update</code>.
14 dictionary SocketProperties {
15 // Flag indicating if the socket is left open when the event page of the
16 // application is unloaded (see
17 // <a href="http://developer.chrome.com/apps/app_lifecycle.html">Manage App
18 // Lifecycle</a>). The default value is "false." When the application is
19 // loaded, any sockets previously opened with persistent=true can be fetched
20 // with <code>getSockets</code>.
21 boolean? persistent;
22
23 // An application-defined string associated with the socket.
24 DOMString? name;
25
26 // The size of the buffer used to receive data. If the buffer is too small
27 // to receive the UDP packet, data is lost. The default value is 4096.
28 long? bufferSize;
29 };
30
31 // Result of <code>create</code> call.
32 dictionary CreateInfo {
33 // The ID of the newly created socket. Note that socket IDs created from
34 // this API are not compatible with socket IDs created from other APIs, such
35 // as the deprecated <code>$ref:socket</code> API.
36 long socketId;
37 };
38
39 // Callback from the <code>create</code> method.
40 // |createInfo| : The result of the socket creation.
41 callback CreateCallback = void (CreateInfo createInfo);
42
43 // Callback from the <code>bind</code> method.
44 // |result| : The result code returned from the underlying network call.
45 // A negative value indicates an error.
46 callback BindCallback = void (long result);
47
48 // Result of the <code>send</code> method.
49 dictionary SendInfo {
50 // The result code returned from the underlying network call.
51 // A negative value indicates an error.
52 long resultCode;
53
54 // The number of bytes sent (if result == 0)
55 long? bytesSent;
56 };
57
58 // Callback from the <code>send</code> method.
59 // |sendInfo| : Result of the <code>send</code> method.
60 callback SendCallback = void (SendInfo sendInfo);
61
62 // Callback from the <code>close</code> method.
63 callback CloseCallback = void ();
64
65 // Callback from the <code>update</code> method.
66 callback UpdateCallback = void ();
67
68 // Callback from the <code>setPaused</code> method.
69 callback SetPausedCallback = void ();
70
71 // Result of the <code>getInfo</code> method.
72 dictionary SocketInfo {
73 // The socket identifier.
74 long socketId;
75
76 // Flag indicating whether the socket is left open when the application is
77 // suspended (see <code>SocketProperties.persistent</code>).
78 boolean persistent;
79
80 // Application-defined string associated with the socket.
81 DOMString? name;
82
83 // The size of the buffer used to receive data. If no buffer size has been
84 // specified explictly, the value is not provided.
85 long? bufferSize;
86
87 // Flag indicating whether the socket is blocked from firing onReceive
88 // events.
89 boolean paused;
90
91 // If the underlying socket is bound, contains its local
92 // IPv4/6 address.
93 DOMString? localAddress;
94
95 // If the underlying socket is bound, contains its local port.
96 long? localPort;
97 };
98
99 // Callback from the <code>getInfo</code> method.
100 // |socketInfo| : Object containing the socket information.
101 callback GetInfoCallback = void (SocketInfo socketInfo);
102
103 // Callback from the <code>getSockets</code> method.
104 // |socketInfos| : Array of object containing socket information.
105 callback GetSocketsCallback = void (SocketInfo[] socketInfos);
106
107 // Callback from the <code>joinGroup</code> method.
108 // |result| : The result code returned from the underlying network call.
109 // A negative value indicates an error.
110 callback JoinGroupCallback = void (long result);
111
112 // Callback from the <code>leaveGroup</code> method.
113 // |result| : The result code returned from the underlying network call.
114 // A negative value indicates an error.
115 callback LeaveGroupCallback = void (long result);
116
117 // Callback from the <code>setMulticastTimeToLive</code> method.
118 // |result| : The result code returned from the underlying network call.
119 // A negative value indicates an error.
120 callback SetMulticastTimeToLiveCallback = void (long result);
121
122 // Callback from the <code>setMulticastLoopbackMode</code> method.
123 // |result| : The result code returned from the underlying network call.
124 // A negative value indicates an error.
125 callback SetMulticastLoopbackModeCallback = void (long result);
126
127 // Callback from the <code>getJoinedGroupsCallback</code> method.
128 // |groups| : Array of groups the socket joined.
129 callback GetJoinedGroupsCallback = void (DOMString[] groups);
130
131 // Data from an <code>onReceive</code> event.
132 dictionary ReceiveInfo {
133 // The socket ID.
134 long socketId;
135
136 // The UDP packet content (truncated to the current buffer size).
137 ArrayBuffer data;
138
139 // The address of the host the packet comes from.
140 DOMString remoteAddress;
141
142 // The port of the host the packet comes from.
143 long remotePort;
144 };
145
146 // Data from an <code>onReceiveError</code> event.
147 dictionary ReceiveErrorInfo {
148 // The socket ID.
149 long socketId;
150
151 // The result code returned from the underlying recvfrom() call.
152 long resultCode;
153 };
154
155 interface Functions {
156 // Creates a UDP socket with the given properties.
157 // |properties| : The socket properties (optional).
158 // |callback| : Called when the socket has been created.
159 static void create(optional SocketProperties properties,
160 CreateCallback callback);
161
162 // Updates the socket properties.
163 // |socketId| : The socket ID.
164 // |properties| : The properties to update.
165 // |callback| : Called when the properties are updated.
166 static void update(long socketId,
167 SocketProperties properties,
168 optional UpdateCallback callback);
169
170 // Pauses or unpauses a socket. A paused socket is blocked from firing
171 // <code>onReceive</code> events.
172 // |connectionId| : The socket ID.
173 // |paused| : Flag to indicate whether to pause or unpause.
174 // |callback| : Called when the socket has been successfully paused or
175 // unpaused.
176 static void setPaused(long socketId,
177 boolean paused,
178 optional SetPausedCallback callback);
179
180 // Binds the local address and port for the socket. For a client socket, it
181 // is recommended to use port 0 to let the platform pick a free port.
182 //
183 // Once the <code>bind</code> operation completes successfully,
184 // <code>onReceive</code> events are raised when UDP packets arrive on the
185 // address/port specified -- unless the socket is paused.
186 //
187 // |socketId| : The socket ID.
188 // |address| : The address of the local machine. DNS name, IPv4 and IPv6
189 // formats are supported. Use "0.0.0.0" to accept packets from all local
190 // available network interfaces.
191 // |port| : The port of the local machine. Use "0" to bind to a free port.
192 // |callback| : Called when the <code>bind</code> operation completes.
193 static void bind(long socketId,
194 DOMString address,
195 long port,
196 BindCallback callback);
197
198 // Sends data on the given socket to the given address and port. The socket
199 // must be bound to a local port before calling this method.
200 // |socketId| : The socket ID.
201 // |data| : The data to send.
202 // |address| : The address of the remote machine.
203 // |port| : The port of the remote machine.
204 // |callback| : Called when the <code>send</code> operation completes.
205 static void send(long socketId,
206 ArrayBuffer data,
207 DOMString address,
208 long port,
209 SendCallback callback);
210
211 // Closes the socket and releases the address/port the socket is bound to.
212 // Each socket created should be closed after use. The socket id is no
213 // longer valid as soon at the function is called. However, the socket is
214 // guaranteed to be closed only when the callback is invoked.
215 // |socketId| : The socket ID.
216 // |callback| : Called when the <code>close</code> operation completes.
217 static void close(long socketId,
218 optional CloseCallback callback);
219
220 // Retrieves the state of the given socket.
221 // |socketId| : The socket ID.
222 // |callback| : Called when the socket state is available.
223 static void getInfo(long socketId,
224 GetInfoCallback callback);
225
226 // Retrieves the list of currently opened sockets owned by the application.
227 // |callback| : Called when the list of sockets is available.
228 static void getSockets(GetSocketsCallback callback);
229
230 // Joins the multicast group and starts to receive packets from that group.
231 // The socket must be bound to a local port before calling this method.
232 // |socketId| : The socket ID.
233 // |address| : The group address to join. Domain names are not supported.
234 // |callback| : Called when the <code>joinGroup</code> operation completes.
235 static void joinGroup(long socketId,
236 DOMString address,
237 JoinGroupCallback callback);
238
239 // Leaves the multicast group previously joined using
240 // <code>joinGroup</code>. This is only necessary to call if you plan to
241 // keep using the socketafterwards, since it will be done automatically by
242 // the OS when the socket is closed.
243 //
244 // Leaving the group will prevent the router from sending multicast
245 // datagrams to the local host, presuming no other process on the host is
246 // still joined to the group.
247 //
248 // |socketId| : The socket ID.
249 // |address| : The group address to leave. Domain names are not supported.
250 // |callback| : Called when the <code>leaveGroup</code> operation completes.
251 static void leaveGroup(long socketId,
252 DOMString address,
253 LeaveGroupCallback callback);
254
255 // Sets the time-to-live of multicast packets sent to the multicast group.
256 //
257 // Calling this method does not require multicast permissions.
258 //
259 // |socketId| : The socket ID.
260 // |ttl| : The time-to-live value.
261 // |callback| : Called when the configuration operation completes.
262 static void setMulticastTimeToLive(
263 long socketId,
264 long ttl,
265 SetMulticastTimeToLiveCallback callback);
266
267 // Sets whether multicast packets sent from the host to the multicast group
268 // will be looped back to the host.
269 //
270 // Note: the behavior of <code>setMulticastLoopbackMode</code> is slightly
271 // different between Windows and Unix-like systems. The inconsistency
272 // happens only when there is more than one application on the same host
273 // joined to the same multicast group while having different settings on
274 // multicast loopback mode. On Windows, the applications with loopback off
275 // will not RECEIVE the loopback packets; while on Unix-like systems, the
276 // applications with loopback off will not SEND the loopback packets to
277 // other applications on the same host. See MSDN: http://goo.gl/6vqbj
278 //
279 // Calling this method does not require multicast permissions.
280 //
281 // |socketId| : The socket ID.
282 // |enabled| : Indicate whether to enable loopback mode.
283 // |callback| : Called when the configuration operation completes.
284 static void setMulticastLoopbackMode(
285 long socketId,
286 boolean enabled,
287 SetMulticastLoopbackModeCallback callback);
288
289 // Gets the multicast group addresses the socket is currently joined to.
290 // |socketId| : The socket ID.
291 // |callback| : Called with an array of strings of the result.
292 static void getJoinedGroups(long socketId,
293 GetJoinedGroupsCallback callback);
294 };
295
296 interface Events {
297 // Event raised when a UDP packet has been received for the given socket.
298 // |info| : The event data.
299 static void onReceive(ReceiveInfo info);
300
301 // Event raised when a network error occured while the runtime was waiting
302 // for data on the socket address and port. Once this event is raised, the
303 // socket is paused and no more <code>onReceive</code> events will be raised
304 // for this socket until the socket is resumed.
305 // |info| : The event data.
306 static void onReceiveError(ReceiveErrorInfo info);
307 };
308 };
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698