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

Side by Side Diff: sdk/lib/io/http_parser.dart

Issue 16125005: Make new StreamController be async by default. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Address review comments Created 7 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 | Annotate | Revision Log
« no previous file with comments | « sdk/lib/io/http_impl.dart ('k') | sdk/lib/io/io_sink.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 part of dart.io; 5 part of dart.io;
6 6
7 // Global constants. 7 // Global constants.
8 class _Const { 8 class _Const {
9 // Bytes for "HTTP". 9 // Bytes for "HTTP".
10 static const HTTP = const [72, 84, 84, 80]; 10 static const HTTP = const [72, 84, 84, 80];
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
100 final StreamSubscription subscription; 100 final StreamSubscription subscription;
101 101
102 List<int> carryOverData; 102 List<int> carryOverData;
103 bool paused; 103 bool paused;
104 104
105 Completer resumeCompleter; 105 Completer resumeCompleter;
106 106
107 _HttpDetachedIncoming(StreamSubscription this.subscription, 107 _HttpDetachedIncoming(StreamSubscription this.subscription,
108 List<int> this.carryOverData) { 108 List<int> this.carryOverData) {
109 controller = new StreamController<List<int>>( 109 controller = new StreamController<List<int>>(
110 sync: true,
110 onListen: resume, 111 onListen: resume,
111 onPause: pause, 112 onPause: pause,
112 onResume: resume, 113 onResume: resume,
113 onCancel: () => subscription.cancel()); 114 onCancel: () => subscription.cancel());
114 if (subscription == null) { 115 if (subscription == null) {
115 // Socket was already closed. 116 // Socket was already closed.
116 if (carryOverData != null) controller.add(carryOverData); 117 if (carryOverData != null) controller.add(carryOverData);
117 controller.close(); 118 controller.close();
118 } else { 119 } else {
119 pause(); 120 pause();
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
188 factory _HttpParser.requestParser() { 189 factory _HttpParser.requestParser() {
189 return new _HttpParser._(true); 190 return new _HttpParser._(true);
190 } 191 }
191 192
192 factory _HttpParser.responseParser() { 193 factory _HttpParser.responseParser() {
193 return new _HttpParser._(false); 194 return new _HttpParser._(false);
194 } 195 }
195 196
196 _HttpParser._(this._requestParser) { 197 _HttpParser._(this._requestParser) {
197 _controller = new StreamController<_HttpIncoming>( 198 _controller = new StreamController<_HttpIncoming>(
198 onListen: () { 199 sync: true,
199 _socketSubscription.resume(); 200 onListen: () {
200 _paused = false; 201 _socketSubscription.resume();
201 }, 202 _paused = false;
202 onPause: () { 203 },
203 _paused = true; 204 onPause: () {
204 _pauseStateChanged(); 205 _paused = true;
205 }, 206 _pauseStateChanged();
206 onResume: () { 207 },
207 _paused = false; 208 onResume: () {
208 _pauseStateChanged(); 209 _paused = false;
209 }, 210 _pauseStateChanged();
210 onCancel: () { 211 },
211 try { 212 onCancel: () {
212 _socketSubscription.cancel(); 213 try {
213 } catch (e) { 214 _socketSubscription.cancel();
214 } 215 } catch (e) {
215 }); 216 }
217 });
216 _reset(); 218 _reset();
217 } 219 }
218 220
219 221
220 StreamSubscription<_HttpIncoming> listen(void onData(_HttpIncoming event), 222 StreamSubscription<_HttpIncoming> listen(void onData(_HttpIncoming event),
221 {void onError(error), 223 {void onError(error),
222 void onDone(), 224 void onDone(),
223 bool cancelOnError}) { 225 bool cancelOnError}) {
224 return _controller.stream.listen(onData, 226 return _controller.stream.listen(onData,
225 onError: onError, 227 onError: onError,
(...skipping 650 matching lines...) Expand 10 before | Expand all | Expand 10 after
876 throw new HttpParserException("Failed to parse HTTP"); 878 throw new HttpParserException("Failed to parse HTTP");
877 } 879 }
878 } 880 }
879 881
880 void _createIncoming(int transferLength) { 882 void _createIncoming(int transferLength) {
881 assert(_incoming == null); 883 assert(_incoming == null);
882 assert(_bodyController == null); 884 assert(_bodyController == null);
883 assert(!_bodyPaused); 885 assert(!_bodyPaused);
884 var incoming; 886 var incoming;
885 _bodyController = new StreamController<List<int>>( 887 _bodyController = new StreamController<List<int>>(
888 sync: true,
886 onListen: () { 889 onListen: () {
887 if (incoming != _incoming) return; 890 if (incoming != _incoming) return;
888 assert(_bodyPaused); 891 assert(_bodyPaused);
889 _bodyPaused = false; 892 _bodyPaused = false;
890 _pauseStateChanged(); 893 _pauseStateChanged();
891 }, 894 },
892 onPause: () { 895 onPause: () {
893 if (incoming != _incoming) return; 896 if (incoming != _incoming) return;
894 assert(!_bodyPaused); 897 assert(!_bodyPaused);
895 _bodyPaused = true; 898 _bodyPaused = true;
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
985 StreamController<_HttpIncoming> _controller; 988 StreamController<_HttpIncoming> _controller;
986 StreamController<List<int>> _bodyController; 989 StreamController<List<int>> _bodyController;
987 } 990 }
988 991
989 992
990 class HttpParserException implements Exception { 993 class HttpParserException implements Exception {
991 const HttpParserException([String this.message = ""]); 994 const HttpParserException([String this.message = ""]);
992 String toString() => "HttpParserException: $message"; 995 String toString() => "HttpParserException: $message";
993 final String message; 996 final String message;
994 } 997 }
OLDNEW
« no previous file with comments | « sdk/lib/io/http_impl.dart ('k') | sdk/lib/io/io_sink.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698