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

Side by Side Diff: mojo/dart/embedder/io/socket_patch.dart

Issue 2006093002: Dart: Futures -> Callbacks. (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Merge Created 4 years, 6 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
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // 5 //
6 // Implementation of Socket and RawSocket for Mojo. 6 // Implementation of Socket and RawSocket for Mojo.
7 // 7 //
8 8
9 patch class Socket { 9 patch class Socket {
10 /* patch */ static Future<Socket> connect(host, int port, {sourceAddress}) { 10 /* patch */ static Future<Socket> connect(host, int port, {sourceAddress}) {
11 return RawSocket.connect(host, port, sourceAddress: sourceAddress).then( 11 return RawSocket.connect(host, port, sourceAddress: sourceAddress).then(
12 (socket) => new _MojoSocket(socket)); 12 (socket) => new _MojoSocket(socket));
13 } 13 }
14 } 14 }
15 15
16 patch class RawSocket { 16 patch class RawSocket {
17 /* patch */ static Future<RawSocket> connect( 17 /* patch */ static Future<RawSocket> connect(
18 host, int port, {sourceAddress}) { 18 host, int port, {sourceAddress}) {
19 return _MojoRawSocket.connect(host, port, sourceAddress); 19 return _MojoRawSocket.connect(host, port, sourceAddress);
20 } 20 }
21 } 21 }
22 22
23 class _MojoRawSocket extends Stream<RawSocketEvent> implements RawSocket { 23 class _MojoRawSocket extends Stream<RawSocketEvent> implements RawSocket {
24 StreamController<RawSocketEvent> _controller; 24 StreamController<RawSocketEvent> _controller;
25 final _tcpBoundSocket = new TcpBoundSocketProxy.unbound(); 25 final _tcpBoundSocket = new _TcpBoundSocketProxy.unbound();
26 final _tcpConnectedSocket = new TcpConnectedSocketProxy.unbound(); 26 final _tcpConnectedSocket = new TcpConnectedSocketProxy.unbound();
27 // Constructing a new MojoDataPipe allocates two handles. All failure paths 27 // Constructing a new MojoDataPipe allocates two handles. All failure paths
28 // must be sure that these handles are closed so we do not leak any handles. 28 // must be sure that these handles are closed so we do not leak any handles.
29 final _pipeOut = new MojoDataPipe(); 29 final _pipeOut = new MojoDataPipe();
30 bool _outClosed = false; 30 bool _outClosed = false;
31 // Constructing a new MojoDataPipe allocates two handles. All failure paths 31 // Constructing a new MojoDataPipe allocates two handles. All failure paths
32 // must be sure that these handles are closed so we do not leak any handles. 32 // must be sure that these handles are closed so we do not leak any handles.
33 final _pipeIn = new MojoDataPipe(); 33 final _pipeIn = new MojoDataPipe();
34 bool _inClosed = false; 34 bool _inClosed = false;
35 bool _readEventsEnabled = true; 35 bool _readEventsEnabled = true;
(...skipping 11 matching lines...) Expand all
47 47
48 _tracePrint(String message) { 48 _tracePrint(String message) {
49 assert(_trace); 49 assert(_trace);
50 print('${_traceId}: $message'); 50 print('${_traceId}: $message');
51 } 51 }
52 52
53 _traceProxies() { 53 _traceProxies() {
54 if (!_trace) { 54 if (!_trace) {
55 return; 55 return;
56 } 56 }
57 _tracePrint('_tcpBoundSocket handle = ${_tcpBoundSocket.handle}'); 57 _tracePrint(
58 _tracePrint('_tcpConnectedSocket handle = ${_tcpConnectedSocket.handle}'); 58 '_tcpBoundSocket handle = ${_tcpBoundSocket.proxy.handle}');
59 _tracePrint(
60 '_tcpConnectedSocket handle = ${_tcpConnectedSocket.handle}');
59 } 61 }
60 62
61 _tracePipeIn() { 63 _tracePipeIn() {
62 if (!_trace) { 64 if (!_trace) {
63 return; 65 return;
64 } 66 }
65 if (_pipeInEvents != null) { 67 if (_pipeInEvents != null) {
66 _tracePrint('pipe in consumer handle = ${_pipeInEvents.handle}'); 68 _tracePrint('pipe in consumer handle = ${_pipeInEvents.handle}');
67 } else { 69 } else {
68 _tracePrint('pipe in consumer handle ${_pipeIn.consumer.handle}'); 70 _tracePrint('pipe in consumer handle ${_pipeIn.consumer.handle}');
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
117 if (!_trace) { 119 if (!_trace) {
118 return; 120 return;
119 } 121 }
120 _tracePrint(_tcpConnectedSocket.toString()); 122 _tracePrint(_tcpConnectedSocket.toString());
121 } 123 }
122 124
123 _traceBoundSocket() { 125 _traceBoundSocket() {
124 if (!_trace) { 126 if (!_trace) {
125 return; 127 return;
126 } 128 }
127 _tracePrint(_tcpBoundSocket.toString()); 129 _tracePrint(_tcpBoundSocket.proxy.toString());
128 } 130 }
129 131
130 static int _traceIdGenerator = 0; 132 static int _traceIdGenerator = 0;
131 static _enableTrace(_MojoRawSocket rawSocket) { 133 static _enableTrace(_MojoRawSocket rawSocket) {
132 if (rawSocket._trace) { 134 if (rawSocket._trace) {
133 return; 135 return;
134 } 136 }
135 rawSocket._trace = true; 137 rawSocket._trace = true;
136 rawSocket._traceId = _traceIdGenerator++; 138 rawSocket._traceId = _traceIdGenerator++;
137 rawSocket._tracePrint('Tracing enabled for ${rawSocket._traceId}'); 139 rawSocket._tracePrint('Tracing enabled for ${rawSocket._traceId}');
138 rawSocket._traceLocalAddress(); 140 rawSocket._traceLocalAddress();
139 rawSocket._traceRemoteAddress(); 141 rawSocket._traceRemoteAddress();
140 } 142 }
141 143
142 _MojoRawSocket() { 144 _MojoRawSocket() {
143 _controller = new StreamController(sync: true, 145 _controller = new StreamController(sync: true,
144 onListen: _onSubscriptionStateChange, 146 onListen: _onSubscriptionStateChange,
145 onCancel: _onSubscriptionStateChange, 147 onCancel: _onSubscriptionStateChange,
146 onPause: _onPauseStateChange, 148 onPause: _onPauseStateChange,
147 onResume: _onPauseStateChange); 149 onResume: _onPauseStateChange);
148 } 150 }
149 151
150 static Future<_MojoRawSocket> _connect(NetAddress source, 152 static Future<_MojoRawSocket> _connect(NetAddress source,
151 NetAddress dest) async { 153 NetAddress dest) async {
152 var rawSocket = new _MojoRawSocket(); 154 var rawSocket = new _MojoRawSocket();
153 var networkService = _getNetworkService(); 155 var networkService = _getNetworkService();
154 assert(networkService != null); 156 assert(networkService != null);
155 var response = 157 var response = await networkService.createTcpBoundSocket(
156 await networkService.createTcpBoundSocket(source, 158 source, rawSocket._tcpBoundSocket.proxy);
157 rawSocket._tcpBoundSocket);
158 if (!_NetworkService._okay(response.result)) { 159 if (!_NetworkService._okay(response.result)) {
159 rawSocket.close(); 160 rawSocket.close();
160 _NetworkService._throwOnError(response.result); 161 _NetworkService._throwOnError(response.result);
161 } 162 }
162 163
163 rawSocket._traceBoundSocket(); 164 rawSocket._traceBoundSocket();
164 165
165 rawSocket._localAddress = 166 rawSocket._localAddress =
166 _NetworkServiceCodec._fromNetAddress(response.boundTo); 167 _NetworkServiceCodec._fromNetAddress(response.boundTo);
167 rawSocket._localPort = 168 rawSocket._localPort =
(...skipping 640 matching lines...) Expand 10 before | Expand all | Expand 10 after
808 if (_raw != null) { 809 if (_raw != null) {
809 _raw.shutdown(SocketDirection.SEND); 810 _raw.shutdown(SocketDirection.SEND);
810 _disableWriteEvent(); 811 _disableWriteEvent();
811 } 812 }
812 } 813 }
813 } 814 }
814 815
815 Map _toJSON(bool ref) => _raw._toJSON(ref); 816 Map _toJSON(bool ref) => _raw._toJSON(ref);
816 void set _owner(owner) { _raw._owner = owner; } 817 void set _owner(owner) { _raw._owner = owner; }
817 } 818 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698