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

Unified Diff: watcher/lib/src/utils.dart

Issue 1400473008: Roll Observatory packages and add a roll script (Closed) Base URL: git@github.com:dart-lang/observatory_pub_packages.git@master
Patch Set: Created 5 years, 2 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
« no previous file with comments | « watcher/lib/src/stat.dart ('k') | watcher/lib/src/watch_event.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: watcher/lib/src/utils.dart
diff --git a/watcher/lib/src/utils.dart b/watcher/lib/src/utils.dart
deleted file mode 100644
index 007c84c193f1bea55261659fd91058bf9a9678be..0000000000000000000000000000000000000000
--- a/watcher/lib/src/utils.dart
+++ /dev/null
@@ -1,117 +0,0 @@
-// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-library watcher.utils;
-
-import 'dart:async';
-import 'dart:io';
-import 'dart:collection';
-
-/// Returns `true` if [error] is a [FileSystemException] for a missing
-/// directory.
-bool isDirectoryNotFoundException(error) {
- if (error is! FileSystemException) return false;
-
- // See dartbug.com/12461 and tests/standalone/io/directory_error_test.dart.
- var notFoundCode = Platform.operatingSystem == "windows" ? 3 : 2;
- return error.osError.errorCode == notFoundCode;
-}
-
-/// Returns the union of all elements in each set in [sets].
-Set unionAll(Iterable<Set> sets) =>
- sets.fold(new Set(), (union, set) => union.union(set));
-
-/// Returns a buffered stream that will emit the same values as the stream
-/// returned by [future] once [future] completes.
-///
-/// If [future] completes to an error, the return value will emit that error and
-/// then close.
-///
-/// If [broadcast] is true, a broadcast stream is returned. This assumes that
-/// the stream returned by [future] will be a broadcast stream as well.
-/// [broadcast] defaults to false.
-Stream futureStream(Future<Stream> future, {bool broadcast: false}) {
- var subscription;
- var controller;
-
- future = future.catchError((e, stackTrace) {
- // Since [controller] is synchronous, it's likely that emitting an error
- // will cause it to be cancelled before we call close.
- if (controller != null) controller.addError(e, stackTrace);
- if (controller != null) controller.close();
- controller = null;
- });
-
- onListen() {
- future.then((stream) {
- if (controller == null) return;
- subscription = stream.listen(
- controller.add,
- onError: controller.addError,
- onDone: controller.close);
- });
- }
-
- onCancel() {
- if (subscription != null) subscription.cancel();
- subscription = null;
- controller = null;
- }
-
- if (broadcast) {
- controller = new StreamController.broadcast(
- sync: true, onListen: onListen, onCancel: onCancel);
- } else {
- controller = new StreamController(
- sync: true, onListen: onListen, onCancel: onCancel);
- }
- return controller.stream;
-}
-
-/// Like [new Future], but avoids around issue 11911 by using [new Future.value]
-/// under the covers.
-Future newFuture(callback()) => new Future.value().then((_) => callback());
-
-/// Returns a [Future] that completes after pumping the event queue [times]
-/// times. By default, this should pump the event queue enough times to allow
-/// any code to run, as long as it's not waiting on some external event.
-Future pumpEventQueue([int times = 20]) {
- if (times == 0) return new Future.value();
- // We use a delayed future to allow microtask events to finish. The
- // Future.value or Future() constructors use scheduleMicrotask themselves and
- // would therefore not wait for microtask callbacks that are scheduled after
- // invoking this method.
- return new Future.delayed(Duration.ZERO, () => pumpEventQueue(times - 1));
-}
-
-/// A stream transformer that batches all events that are sent at the same time.
-///
-/// When multiple events are synchronously added to a stream controller, the
-/// [StreamController] implementation uses [scheduleMicrotask] to schedule the
-/// asynchronous firing of each event. In order to recreate the synchronous
-/// batches, this collates all the events that are received in "nearby"
-/// microtasks.
-class BatchedStreamTransformer<T> implements StreamTransformer<T, List<T>> {
- Stream<List<T>> bind(Stream<T> input) {
- var batch = new Queue();
- return new StreamTransformer<T, List<T>>.fromHandlers(
- handleData: (event, sink) {
- batch.add(event);
-
- // [Timer.run] schedules an event that runs after any microtasks that have
- // been scheduled.
- Timer.run(() {
- if (batch.isEmpty) return;
- sink.add(batch.toList());
- batch.clear();
- });
- }, handleDone: (sink) {
- if (batch.isNotEmpty) {
- sink.add(batch.toList());
- batch.clear();
- }
- sink.close();
- }).bind(input);
- }
-}
« no previous file with comments | « watcher/lib/src/stat.dart ('k') | watcher/lib/src/watch_event.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698