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 540 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
551 int backlog, | 551 int backlog, |
552 bool v6Only) { | 552 bool v6Only) { |
553 if (port < 0 || port > 0xFFFF) | 553 if (port < 0 || port > 0xFFFF) |
554 throw new ArgumentError("Invalid port $port"); | 554 throw new ArgumentError("Invalid port $port"); |
555 if (backlog < 0) throw new ArgumentError("Invalid backlog $backlog"); | 555 if (backlog < 0) throw new ArgumentError("Invalid backlog $backlog"); |
556 return _NativeSocket.bind(address, port, backlog, v6Only) | 556 return _NativeSocket.bind(address, port, backlog, v6Only) |
557 .then((socket) => new _RawServerSocket(socket)); | 557 .then((socket) => new _RawServerSocket(socket)); |
558 } | 558 } |
559 | 559 |
560 _RawServerSocket(this._socket) { | 560 _RawServerSocket(this._socket) { |
561 _controller = new StreamController( | 561 _controller = new StreamController(sync: true, |
562 onListen: _onSubscriptionStateChange, | 562 onListen: _onSubscriptionStateChange, |
563 onCancel: _onSubscriptionStateChange, | 563 onCancel: _onSubscriptionStateChange, |
564 onPause: _onPauseStateChange, | 564 onPause: _onPauseStateChange, |
565 onResume: _onPauseStateChange); | 565 onResume: _onPauseStateChange); |
566 _socket.closeFuture.then((_) => _controller.close()); | 566 _socket.closeFuture.then((_) => _controller.close()); |
567 _socket.setHandlers( | 567 _socket.setHandlers( |
568 read: () { | 568 read: () { |
569 var socket = _socket.accept(); | 569 var socket = _socket.accept(); |
570 if (socket != null) _controller.add(new _RawSocket(socket)); | 570 if (socket != null) _controller.add(new _RawSocket(socket)); |
571 }, | 571 }, |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
623 StreamController<RawSocketEvent> _controller; | 623 StreamController<RawSocketEvent> _controller; |
624 bool _readEventsEnabled = true; | 624 bool _readEventsEnabled = true; |
625 bool _writeEventsEnabled = true; | 625 bool _writeEventsEnabled = true; |
626 | 626 |
627 static Future<RawSocket> connect(host, int port) { | 627 static Future<RawSocket> connect(host, int port) { |
628 return _NativeSocket.connect(host, port) | 628 return _NativeSocket.connect(host, port) |
629 .then((socket) => new _RawSocket(socket)); | 629 .then((socket) => new _RawSocket(socket)); |
630 } | 630 } |
631 | 631 |
632 _RawSocket(this._socket) { | 632 _RawSocket(this._socket) { |
633 _controller = new StreamController( | 633 _controller = new StreamController(sync: true, |
634 onListen: _onSubscriptionStateChange, | 634 onListen: _onSubscriptionStateChange, |
635 onCancel: _onSubscriptionStateChange, | 635 onCancel: _onSubscriptionStateChange, |
636 onPause: _onPauseStateChange, | 636 onPause: _onPauseStateChange, |
637 onResume: _onPauseStateChange); | 637 onResume: _onPauseStateChange); |
638 _socket.closeFuture.then((_) => _controller.close()); | 638 _socket.closeFuture.then((_) => _controller.close()); |
639 _socket.setHandlers( | 639 _socket.setHandlers( |
640 read: () => _controller.add(RawSocketEvent.READ), | 640 read: () => _controller.add(RawSocketEvent.READ), |
641 write: () { | 641 write: () { |
642 // The write event handler is automatically disabled by the | 642 // The write event handler is automatically disabled by the |
643 // event handler when it fires. | 643 // event handler when it fires. |
(...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
879 RawSocket _raw; // Set to null when the raw socket is closed. | 879 RawSocket _raw; // Set to null when the raw socket is closed. |
880 bool _closed = false; // Set to true when the raw socket is closed. | 880 bool _closed = false; // Set to true when the raw socket is closed. |
881 StreamController _controller; | 881 StreamController _controller; |
882 bool _controllerClosed = false; | 882 bool _controllerClosed = false; |
883 _SocketStreamConsumer _consumer; | 883 _SocketStreamConsumer _consumer; |
884 IOSink _sink; | 884 IOSink _sink; |
885 var _subscription; | 885 var _subscription; |
886 var _detachReady; | 886 var _detachReady; |
887 | 887 |
888 _Socket(RawSocket this._raw) { | 888 _Socket(RawSocket this._raw) { |
889 _controller = new StreamController<List<int>>( | 889 _controller = new StreamController<List<int>>(sync: true, |
890 onListen: _onSubscriptionStateChange, | 890 onListen: _onSubscriptionStateChange, |
891 onCancel: _onSubscriptionStateChange, | 891 onCancel: _onSubscriptionStateChange, |
892 onPause: _onPauseStateChange, | 892 onPause: _onPauseStateChange, |
893 onResume: _onPauseStateChange); | 893 onResume: _onPauseStateChange); |
894 _consumer = new _SocketStreamConsumer(this); | 894 _consumer = new _SocketStreamConsumer(this); |
895 _sink = new IOSink(_consumer); | 895 _sink = new IOSink(_consumer); |
896 | 896 |
897 // Disable read events until there is a subscription. | 897 // Disable read events until there is a subscription. |
898 _raw.readEventsEnabled = false; | 898 _raw.readEventsEnabled = false; |
899 | 899 |
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1065 if (_detachReady != null) { | 1065 if (_detachReady != null) { |
1066 _detachReady.complete(null); | 1066 _detachReady.complete(null); |
1067 } else { | 1067 } else { |
1068 if (_raw != null) { | 1068 if (_raw != null) { |
1069 _raw.shutdown(SocketDirection.SEND); | 1069 _raw.shutdown(SocketDirection.SEND); |
1070 _disableWriteEvent(); | 1070 _disableWriteEvent(); |
1071 } | 1071 } |
1072 } | 1072 } |
1073 } | 1073 } |
1074 } | 1074 } |
OLD | NEW |