OLD | NEW |
| (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 }; | |
OLD | NEW |