| 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 bool shared: false}) { | 10 bool shared: false}) { |
| (...skipping 1065 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1076 OSError nativeGetError() native "Socket_GetError"; | 1076 OSError nativeGetError() native "Socket_GetError"; |
| 1077 nativeGetOption(int option, int protocol) native "Socket_GetOption"; | 1077 nativeGetOption(int option, int protocol) native "Socket_GetOption"; |
| 1078 bool nativeSetOption(int option, int protocol, value) | 1078 bool nativeSetOption(int option, int protocol, value) |
| 1079 native "Socket_SetOption"; | 1079 native "Socket_SetOption"; |
| 1080 bool nativeJoinMulticast( | 1080 bool nativeJoinMulticast( |
| 1081 List<int> addr, List<int> interfaceAddr, int interfaceIndex) | 1081 List<int> addr, List<int> interfaceAddr, int interfaceIndex) |
| 1082 native "Socket_JoinMulticast"; | 1082 native "Socket_JoinMulticast"; |
| 1083 bool nativeLeaveMulticast( | 1083 bool nativeLeaveMulticast( |
| 1084 List<int> addr, List<int> interfaceAddr, int interfaceIndex) | 1084 List<int> addr, List<int> interfaceAddr, int interfaceIndex) |
| 1085 native "Socket_LeaveMulticast"; | 1085 native "Socket_LeaveMulticast"; |
| 1086 bool _nativeMarkSocketAsSharedHack() | |
| 1087 native "Socket_MarkSocketAsSharedHack"; | |
| 1088 } | 1086 } |
| 1089 | 1087 |
| 1090 | 1088 |
| 1091 class _RawServerSocket extends Stream<RawSocket> | 1089 class _RawServerSocket extends Stream<RawSocket> |
| 1092 implements RawServerSocket { | 1090 implements RawServerSocket { |
| 1093 final _NativeSocket _socket; | 1091 final _NativeSocket _socket; |
| 1094 StreamController<RawSocket> _controller; | 1092 StreamController<RawSocket> _controller; |
| 1095 ReceivePort _referencePort; | 1093 ReceivePort _referencePort; |
| 1096 bool _v6Only; | 1094 bool _v6Only; |
| 1097 | 1095 |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1180 } | 1178 } |
| 1181 | 1179 |
| 1182 void _onPauseStateChange() { | 1180 void _onPauseStateChange() { |
| 1183 if (_controller.isPaused) { | 1181 if (_controller.isPaused) { |
| 1184 _pause(); | 1182 _pause(); |
| 1185 } else { | 1183 } else { |
| 1186 _resume(); | 1184 _resume(); |
| 1187 } | 1185 } |
| 1188 } | 1186 } |
| 1189 | 1187 |
| 1190 RawServerSocketReference get reference { | |
| 1191 if (_referencePort == null) { | |
| 1192 bool successfull = _socket._nativeMarkSocketAsSharedHack(); | |
| 1193 _referencePort = new ReceivePort(); | |
| 1194 _referencePort.listen((sendPort) { | |
| 1195 sendPort.send( | |
| 1196 [_socket.address, | |
| 1197 _socket.port, | |
| 1198 _v6Only]); | |
| 1199 }); | |
| 1200 } | |
| 1201 return new _RawServerSocketReference(_referencePort.sendPort); | |
| 1202 } | |
| 1203 | |
| 1204 void set _owner(owner) { _socket.owner = owner; } | 1188 void set _owner(owner) { _socket.owner = owner; } |
| 1205 } | 1189 } |
| 1206 | 1190 |
| 1207 | 1191 |
| 1208 class _RawServerSocketReference implements RawServerSocketReference { | |
| 1209 final SendPort _sendPort; | |
| 1210 | |
| 1211 _RawServerSocketReference(this._sendPort); | |
| 1212 | |
| 1213 Future<RawServerSocket> create() { | |
| 1214 var port = new ReceivePort(); | |
| 1215 _sendPort.send(port.sendPort); | |
| 1216 return port.first.then((List args) { | |
| 1217 port.close(); | |
| 1218 | |
| 1219 InternetAddress address = args[0]; | |
| 1220 int tcpPort = args[1]; | |
| 1221 bool v6Only = args[2]; | |
| 1222 return | |
| 1223 RawServerSocket.bind(address, tcpPort, v6Only: v6Only, shared: true); | |
| 1224 }); | |
| 1225 } | |
| 1226 | |
| 1227 int get hashCode => _sendPort.hashCode; | |
| 1228 | |
| 1229 bool operator==(Object other) | |
| 1230 => other is _RawServerSocketReference && _sendPort == other._sendPort; | |
| 1231 } | |
| 1232 | |
| 1233 | |
| 1234 class _RawSocket extends Stream<RawSocketEvent> | 1192 class _RawSocket extends Stream<RawSocketEvent> |
| 1235 implements RawSocket { | 1193 implements RawSocket { |
| 1236 final _NativeSocket _socket; | 1194 final _NativeSocket _socket; |
| 1237 StreamController<RawSocketEvent> _controller; | 1195 StreamController<RawSocketEvent> _controller; |
| 1238 bool _readEventsEnabled = true; | 1196 bool _readEventsEnabled = true; |
| 1239 bool _writeEventsEnabled = true; | 1197 bool _writeEventsEnabled = true; |
| 1240 | 1198 |
| 1241 // Flag to handle Ctrl-D closing of stdio on Mac OS. | 1199 // Flag to handle Ctrl-D closing of stdio on Mac OS. |
| 1242 bool _isMacOSTerminalInput = false; | 1200 bool _isMacOSTerminalInput = false; |
| 1243 | 1201 |
| (...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1386 /* patch */ static Future<ServerSocket> bind(address, | 1344 /* patch */ static Future<ServerSocket> bind(address, |
| 1387 int port, | 1345 int port, |
| 1388 {int backlog: 0, | 1346 {int backlog: 0, |
| 1389 bool v6Only: false, | 1347 bool v6Only: false, |
| 1390 bool shared: false}) { | 1348 bool shared: false}) { |
| 1391 return _ServerSocket.bind(address, port, backlog, v6Only, shared); | 1349 return _ServerSocket.bind(address, port, backlog, v6Only, shared); |
| 1392 } | 1350 } |
| 1393 } | 1351 } |
| 1394 | 1352 |
| 1395 | 1353 |
| 1396 class _ServerSocketReference implements ServerSocketReference { | |
| 1397 final RawServerSocketReference _rawReference; | |
| 1398 | |
| 1399 _ServerSocketReference(this._rawReference); | |
| 1400 | |
| 1401 Future<ServerSocket> create() { | |
| 1402 return _rawReference.create().then((raw) => new _ServerSocket(raw)); | |
| 1403 } | |
| 1404 } | |
| 1405 | |
| 1406 | |
| 1407 class _ServerSocket extends Stream<Socket> | 1354 class _ServerSocket extends Stream<Socket> |
| 1408 implements ServerSocket { | 1355 implements ServerSocket { |
| 1409 final _socket; | 1356 final _socket; |
| 1410 | 1357 |
| 1411 static Future<_ServerSocket> bind(address, | 1358 static Future<_ServerSocket> bind(address, |
| 1412 int port, | 1359 int port, |
| 1413 int backlog, | 1360 int backlog, |
| 1414 bool v6Only, | 1361 bool v6Only, |
| 1415 bool shared) { | 1362 bool shared) { |
| 1416 return _RawServerSocket.bind(address, port, backlog, v6Only, shared) | 1363 return _RawServerSocket.bind(address, port, backlog, v6Only, shared) |
| (...skipping 12 matching lines...) Expand all Loading... |
| 1429 onDone: onDone, | 1376 onDone: onDone, |
| 1430 cancelOnError: cancelOnError); | 1377 cancelOnError: cancelOnError); |
| 1431 } | 1378 } |
| 1432 | 1379 |
| 1433 int get port => _socket.port; | 1380 int get port => _socket.port; |
| 1434 | 1381 |
| 1435 InternetAddress get address => _socket.address; | 1382 InternetAddress get address => _socket.address; |
| 1436 | 1383 |
| 1437 Future close() => _socket.close().then((_) => this); | 1384 Future close() => _socket.close().then((_) => this); |
| 1438 | 1385 |
| 1439 ServerSocketReference get reference { | |
| 1440 return new _ServerSocketReference(_socket.reference); | |
| 1441 } | |
| 1442 | |
| 1443 void set _owner(owner) { _socket._owner = owner; } | 1386 void set _owner(owner) { _socket._owner = owner; } |
| 1444 } | 1387 } |
| 1445 | 1388 |
| 1446 | 1389 |
| 1447 patch class Socket { | 1390 patch class Socket { |
| 1448 /* patch */ static Future<Socket> connect(host, int port, {sourceAddress}) { | 1391 /* patch */ static Future<Socket> connect(host, int port, {sourceAddress}) { |
| 1449 return RawSocket.connect(host, port, sourceAddress: sourceAddress).then( | 1392 return RawSocket.connect(host, port, sourceAddress: sourceAddress).then( |
| 1450 (socket) => new _Socket(socket)); | 1393 (socket) => new _Socket(socket)); |
| 1451 } | 1394 } |
| 1452 } | 1395 } |
| (...skipping 448 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1901 Datagram _makeDatagram(List<int> data, | 1844 Datagram _makeDatagram(List<int> data, |
| 1902 String address, | 1845 String address, |
| 1903 List<int> in_addr, | 1846 List<int> in_addr, |
| 1904 int port) { | 1847 int port) { |
| 1905 return new Datagram( | 1848 return new Datagram( |
| 1906 data, | 1849 data, |
| 1907 new _InternetAddress(address, null, in_addr), | 1850 new _InternetAddress(address, null, in_addr), |
| 1908 port); | 1851 port); |
| 1909 } | 1852 } |
| 1910 | 1853 |
| OLD | NEW |