OLD | NEW |
---|---|
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 patch class RawServerSocket { | 5 patch class RawServerSocket { |
6 /* patch */ static Future<RawServerSocket> bind(address, | 6 /* patch */ static Future<RawServerSocket> bind(address, |
7 int port, | 7 int port, |
8 {int backlog: 0, | 8 {int backlog: 0, |
9 bool v6Only: false}) { | 9 bool v6Only: false}) { |
10 return _RawServerSocket.bind(address, port, backlog, v6Only); | 10 return _RawServerSocket.bind(address, port, backlog, v6Only); |
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
190 return "InternetAddress('$address', ${type.name})"; | 190 return "InternetAddress('$address', ${type.name})"; |
191 } | 191 } |
192 | 192 |
193 static Uint8List _fixed(int id) native "InternetAddress_Fixed"; | 193 static Uint8List _fixed(int id) native "InternetAddress_Fixed"; |
194 static Uint8List _parse(int type, String address) | 194 static Uint8List _parse(int type, String address) |
195 native "InternetAddress_Parse"; | 195 native "InternetAddress_Parse"; |
196 } | 196 } |
197 | 197 |
198 class _NetworkInterface implements NetworkInterface { | 198 class _NetworkInterface implements NetworkInterface { |
199 final String name; | 199 final String name; |
200 final List<InternetAddress> addresses; | 200 final int index; |
201 final List<InternetAddress> addresses = []; | |
201 | 202 |
202 _NetworkInterface(String this.name, List<InternetAddress> this.addresses); | 203 _NetworkInterface(this.name, this.index); |
203 | 204 |
204 String toString() { | 205 String toString() { |
205 return "NetworkInterface('$name', $addresses)"; | 206 return "NetworkInterface('$name', $addresses)"; |
206 } | 207 } |
207 } | 208 } |
208 | 209 |
209 | 210 |
210 // The _NativeSocket class encapsulates an OS socket. | 211 // The _NativeSocket class encapsulates an OS socket. |
211 class _NativeSocket extends NativeFieldWrapperClass1 { | 212 class _NativeSocket extends NativeFieldWrapperClass1 { |
212 // Bit flags used when communicating between the eventhandler and | 213 // Bit flags used when communicating between the eventhandler and |
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
303 return _IOService.dispatch(_SOCKET_LIST_INTERFACES, [type._value]) | 304 return _IOService.dispatch(_SOCKET_LIST_INTERFACES, [type._value]) |
304 .then((response) { | 305 .then((response) { |
305 if (isErrorResponse(response)) { | 306 if (isErrorResponse(response)) { |
306 throw createError(response, "Failed listing interfaces"); | 307 throw createError(response, "Failed listing interfaces"); |
307 } else { | 308 } else { |
308 var list = new List<NetworkInterface>(); | 309 var list = new List<NetworkInterface>(); |
309 var map = response.skip(1) | 310 var map = response.skip(1) |
310 .fold(new Map<String, List<InternetAddress>>(), (map, result) { | 311 .fold(new Map<String, List<InternetAddress>>(), (map, result) { |
311 var type = new InternetAddressType._from(result[0]); | 312 var type = new InternetAddressType._from(result[0]); |
312 var name = result[3]; | 313 var name = result[3]; |
314 var index = result[4]; | |
313 var address = new _InternetAddress( | 315 var address = new _InternetAddress( |
314 type, result[1], "", result[2]); | 316 type, result[1], "", result[2]); |
315 if (!includeLinkLocal && address.isLinkLocal) return map; | 317 if (!includeLinkLocal && address.isLinkLocal) return map; |
316 if (!includeLoopback && address.isLoopback) return map; | 318 if (!includeLoopback && address.isLoopback) return map; |
317 map.putIfAbsent(name, () => new List<InternetAddress>()); | 319 map.putIfAbsent( |
318 map[name].add(address); | 320 name, () => new _NetworkInterface(name, index)); |
321 map[name].addresses.add(address); | |
319 return map; | 322 return map; |
320 }) | 323 }) |
Anders Johnsen
2013/11/29 08:35:10
.values.toList();
Søren Gjesse
2013/11/29 10:01:20
Done.
| |
321 .forEach((name, addresses) { | 324 .forEach((name, interface) { |
322 list.add(new _NetworkInterface(name, addresses)); | 325 list.add(interface); |
323 }); | 326 }); |
324 return list; | 327 return list; |
325 } | 328 } |
326 }); | 329 }); |
327 } | 330 } |
328 | 331 |
329 static Future<_NativeSocket> connect(host, int port) { | 332 static Future<_NativeSocket> connect(host, int port) { |
330 return new Future.value(host) | 333 return new Future.value(host) |
331 .then((host) { | 334 .then((host) { |
332 if (host is _InternetAddress) return host; | 335 if (host is _InternetAddress) return host; |
(...skipping 939 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1272 if (_detachReady != null) { | 1275 if (_detachReady != null) { |
1273 _detachReady.complete(null); | 1276 _detachReady.complete(null); |
1274 } else { | 1277 } else { |
1275 if (_raw != null) { | 1278 if (_raw != null) { |
1276 _raw.shutdown(SocketDirection.SEND); | 1279 _raw.shutdown(SocketDirection.SEND); |
1277 _disableWriteEvent(); | 1280 _disableWriteEvent(); |
1278 } | 1281 } |
1279 } | 1282 } |
1280 } | 1283 } |
1281 } | 1284 } |
OLD | NEW |