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

Side by Side Diff: sdk/lib/_internal/pub/lib/src/io.dart

Issue 94843002: Unify dart:async and pub/io.dart TimeoutException classes. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years 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/_internal/pub/lib/src/http.dart ('k') | sdk/lib/_internal/pub/lib/src/log.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 /// Helper functionality to make working with IO easier. 5 /// Helper functionality to make working with IO easier.
6 library pub.io; 6 library pub.io;
7 7
8 import 'dart:async' hide TimeoutException; 8 import 'dart:async';
9 export 'dart:async' show TimeoutException;
Bob Nystrom 2013/12/02 22:40:42 Let's remove this and just change any other files
Lasse Reichstein Nielsen 2013/12/03 08:38:29 Removed. I don't think it's needed anywhere, but I
9 import 'dart:collection'; 10 import 'dart:collection';
10 import 'dart:convert'; 11 import 'dart:convert';
11 import 'dart:io'; 12 import 'dart:io';
12 13
13 import 'package:path/path.dart' as path; 14 import 'package:path/path.dart' as path;
14 import 'package:http/http.dart' show ByteStream; 15 import 'package:http/http.dart' show ByteStream;
15 import 'package:stack_trace/stack_trace.dart'; 16 import 'package:stack_trace/stack_trace.dart';
16 17
17 import 'error_group.dart'; 18 import 'error_group.dart';
18 import 'log.dart' as log; 19 import 'log.dart' as log;
(...skipping 603 matching lines...) Expand 10 before | Expand all | Expand 10 after
622 } 623 }
623 624
624 /// Wraps [input] to provide a timeout. If [input] completes before 625 /// Wraps [input] to provide a timeout. If [input] completes before
625 /// [milliseconds] have passed, then the return value completes in the same way. 626 /// [milliseconds] have passed, then the return value completes in the same way.
626 /// However, if [milliseconds] pass before [input] has completed, it completes 627 /// However, if [milliseconds] pass before [input] has completed, it completes
627 /// with a [TimeoutException] with [description] (which should be a fragment 628 /// with a [TimeoutException] with [description] (which should be a fragment
628 /// describing the action that timed out). 629 /// describing the action that timed out).
629 /// 630 ///
630 /// Note that timing out will not cancel the asynchronous operation behind 631 /// Note that timing out will not cancel the asynchronous operation behind
631 /// [input]. 632 /// [input].
632 Future timeout(Future input, int milliseconds, String description) { 633 Future timeout(Future input, int milliseconds, String description) {
nweiz 2013/12/02 23:54:22 Add a TODO assigned to me to replace this with [Fu
Lasse Reichstein Nielsen 2013/12/03 08:38:29 Done.
633 var completer = new Completer(); 634 var completer = new Completer();
634 var timer = new Timer(new Duration(milliseconds: milliseconds), () { 635 var duration = new Duration(milliseconds: milliseconds);
636 var timer = new Timer(duration, () {
635 completer.completeError(new TimeoutException( 637 completer.completeError(new TimeoutException(
636 'Timed out while $description.'), 638 'Timed out while $description.', duration),
637 new Trace.current()); 639 new Trace.current());
638 }); 640 });
639 input.then((value) { 641 input.then((value) {
640 if (completer.isCompleted) return; 642 if (completer.isCompleted) return;
641 timer.cancel(); 643 timer.cancel();
642 completer.complete(value); 644 completer.complete(value);
643 }).catchError((e, stackTrace) { 645 }).catchError((e, stackTrace) {
644 if (completer.isCompleted) return; 646 if (completer.isCompleted) return;
645 timer.cancel(); 647 timer.cancel();
646 completer.completeError(e, stackTrace); 648 completer.completeError(e, stackTrace);
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
809 }); 811 });
810 }).catchError((e, stackTrace) { 812 }).catchError((e, stackTrace) {
811 // We don't have to worry about double-signaling here, since the store() 813 // We don't have to worry about double-signaling here, since the store()
812 // above will only be reached if everything succeeds. 814 // above will only be reached if everything succeeds.
813 controller.addError(e, stackTrace); 815 controller.addError(e, stackTrace);
814 controller.close(); 816 controller.close();
815 }); 817 });
816 return new ByteStream(controller.stream); 818 return new ByteStream(controller.stream);
817 } 819 }
818 820
819 /// Exception thrown when an operation times out.
820 class TimeoutException implements Exception {
821 final String message;
822
823 const TimeoutException(this.message);
824
825 String toString() => message;
826 }
827
828 /// Contains the results of invoking a [Process] and waiting for it to complete. 821 /// Contains the results of invoking a [Process] and waiting for it to complete.
829 class PubProcessResult { 822 class PubProcessResult {
830 final List<String> stdout; 823 final List<String> stdout;
831 final List<String> stderr; 824 final List<String> stderr;
832 final int exitCode; 825 final int exitCode;
833 826
834 const PubProcessResult(this.stdout, this.stderr, this.exitCode); 827 const PubProcessResult(this.stdout, this.stderr, this.exitCode);
835 828
836 bool get success => exitCode == 0; 829 bool get success => exitCode == 0;
837 } 830 }
838 831
839 /// Gets a [Uri] for [uri], which can either already be one, or be a [String]. 832 /// Gets a [Uri] for [uri], which can either already be one, or be a [String].
840 Uri _getUri(uri) { 833 Uri _getUri(uri) {
841 if (uri is Uri) return uri; 834 if (uri is Uri) return uri;
842 return Uri.parse(uri); 835 return Uri.parse(uri);
843 } 836 }
OLDNEW
« no previous file with comments | « sdk/lib/_internal/pub/lib/src/http.dart ('k') | sdk/lib/_internal/pub/lib/src/log.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698