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

Unified Diff: runtime/bin/stream_util.dart

Issue 9495007: Prepare the HTTP library for inclusion in the standalone VM (step 2) (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 8 years, 10 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 side-by-side diff with in-line comments
Download patch
Index: runtime/bin/stream_util.dart
diff --git a/runtime/bin/stream_util.dart b/runtime/bin/stream_util.dart
index f5f94820c1ae0c727de73bde2f13086b1681c254..ad06819c901ebe47d151f9be44369c796aedf693 100644
--- a/runtime/bin/stream_util.dart
+++ b/runtime/bin/stream_util.dart
@@ -36,9 +36,7 @@ class _BaseDataInputStream {
}
void close() {
- if (_scheduledDataCallback != null) {
- _scheduledDataCallback.cancel();
- }
+ _cancelScheduledDataCallback();
_close();
_checkScheduleCallbacks();
}
@@ -61,6 +59,37 @@ class _BaseDataInputStream {
abstract List<int> _read(int bytesToRead);
+ void _dataReceived() {
+ // More data have been received asynchronously. Perform the data
Mads Ager (google) 2012/02/28 12:27:40 have -> has
Søren Gjesse 2012/02/28 13:03:42 Done.
+ // handler callback now.
+ _cancelScheduledDataCallback();
+ if (_clientDataHandler !== null) {
+ _clientDataHandler();
+ }
+ _checkScheduleCallbacks();
+ }
+
+ void _closeReceived() {
+ // Close indication have been received asynchronously. Perform the
Mads Ager (google) 2012/02/28 12:27:40 have -> has
Søren Gjesse 2012/02/28 13:03:42 Done.
+ // close callback now if all data has been delivered.
+ _streamMarkedClosed = true;
+ if (available() == 0) {
+ if (_clientCloseHandler !== null) {
+ _clientCloseHandler();
+ _closeCallbackCalled = true;
+ }
+ } else {
+ _checkScheduleCallbacks();
+ }
+ }
+
+ void _cancelScheduledDataCallback() {
+ if (_scheduledDataCallback != null) {
+ _scheduledDataCallback.cancel();
+ _scheduledDataCallback = null;
+ }
+ }
+
void _checkScheduleCallbacks() {
void issueDataCallback(Timer timer) {
_scheduledDataCallback = null;
@@ -84,9 +113,7 @@ class _BaseDataInputStream {
_scheduledDataCallback = new Timer(issueDataCallback, 0);
}
} else if (_streamMarkedClosed && !_closeCallbackCalled) {
- if (_scheduledDataCallback != null) {
- _scheduledDataCallback.cancel();
- }
+ _cancelScheduledDataCallback();
_close();
_scheduledCloseCallback = new Timer(issueCloseCallback, 0);
_closeCallbackCalled = true;

Powered by Google App Engine
This is Rietveld 408576698