Index: pkg/fletchc/lib/src/zone_helper.dart |
diff --git a/pkg/fletchc/lib/src/zone_helper.dart b/pkg/fletchc/lib/src/zone_helper.dart |
deleted file mode 100644 |
index 2d37ccfe5a33c672a2b2fbd724e8e184dcbd0b6e..0000000000000000000000000000000000000000 |
--- a/pkg/fletchc/lib/src/zone_helper.dart |
+++ /dev/null |
@@ -1,78 +0,0 @@ |
-// Copyright (c) 2015, the Dartino 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.md file. |
- |
-/// Helper functions for running code in a Zone. |
-library fletchc.zone_helper; |
- |
-import 'dart:async'; |
- |
-import 'dart:isolate'; |
- |
-Future runGuarded( |
- Future f(), |
- {void printLineOnStdout(line), |
- void handleLateError(error, StackTrace stackTrace)}) { |
- |
- var printWrapper; |
- if (printLineOnStdout != null) { |
- printWrapper = (_1, _2, _3, String line) { |
- printLineOnStdout(line); |
- }; |
- } |
- |
- Completer completer = new Completer(); |
- |
- handleUncaughtError(error, StackTrace stackTrace) { |
- if (!completer.isCompleted) { |
- completer.completeError(error, stackTrace); |
- } else if (handleLateError != null) { |
- handleLateError(error, stackTrace); |
- } else { |
- // Delegate to parent. |
- throw error; |
- } |
- } |
- |
- ZoneSpecification specification = new ZoneSpecification(print: printWrapper); |
- |
- ReceivePort errorPort = new ReceivePort(); |
- Future errorFuture = errorPort.listen((List errors) { |
- Isolate.current.removeErrorListener(errorPort.sendPort); |
- errorPort.close(); |
- var error = errors[0]; |
- var stackTrace = errors[1]; |
- if (stackTrace != null) { |
- stackTrace = new StackTrace.fromString(stackTrace); |
- } |
- handleUncaughtError(error, stackTrace); |
- }).asFuture(); |
- |
- Isolate.current.addErrorListener(errorPort.sendPort); |
- Isolate.current.setErrorsFatal(false); |
- return acknowledgeControlMessages(Isolate.current).then((_) { |
- runZoned( |
- () => new Future(f).then(completer.complete), |
- zoneSpecification: specification, |
- onError: handleUncaughtError); |
- |
- return completer.future.whenComplete(() { |
- errorPort.close(); |
- Isolate.current.removeErrorListener(errorPort.sendPort); |
- return errorFuture; |
- }); |
- }); |
-} |
- |
-/// Ping [isolate] to ensure control messages have been delivered. Control |
-/// messages are things like [Isolate.addErrorListener] and |
-/// [Isolate.addOnExitListener]. |
-Future acknowledgeControlMessages(Isolate isolate, {Capability resume}) { |
- ReceivePort ping = new ReceivePort(); |
- Isolate.current.ping(ping.sendPort); |
- if (resume == null) { |
- return ping.first; |
- } else { |
- return ping.first.then((_) => isolate.resume(resume)); |
- } |
-} |