Index: corelib/src/isolate.dart |
diff --git a/corelib/src/isolate.dart b/corelib/src/isolate.dart |
deleted file mode 100644 |
index 09c3ab047ff0234c4fd3fe9688ff867cdf4e2418..0000000000000000000000000000000000000000 |
--- a/corelib/src/isolate.dart |
+++ /dev/null |
@@ -1,182 +0,0 @@ |
-// Copyright (c) 2011, 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. |
- |
-// Dart core library. |
-// TODO(sigmund): move to dart:isolate |
- |
-/** |
- * [SendPort]s are created from [ReceivePort]s. Any message sent through |
- * a [SendPort] is delivered to its respective [ReceivePort]. There might be |
- * many [SendPort]s for the same [ReceivePort]. |
- * |
- * [SendPort]s can be transmitted to other isolates. |
- */ |
-interface SendPort extends Hashable { |
- |
- /** |
- * Sends an asynchronous [message] to this send port. The message is |
- * copied to the receiving isolate. If the message contains any |
- * receive ports, they are translated to the corresponding send port |
- * before being transmitted. If specified, the [replyTo] port will be |
- * provided to the receiver to facilitate exchanging sequences of |
- * messages. |
- */ |
- void send(var message, [SendPort replyTo]); |
- |
- /** |
- * Creates a new single-shot receive port, sends a message to this |
- * send port with replyTo set to the opened port, and returns the |
- * receive port. |
- */ |
- ReceivePort call(var message); |
- |
- /** |
- * Tests whether [other] is a [SendPort] pointing to the same |
- * [ReceivePort] as this one. |
- */ |
- bool operator==(var other); |
- |
- /** |
- * Returns an immutable hash code for this send port that is |
- * consistent with the == operator. |
- */ |
- int hashCode(); |
- |
-} |
- |
- |
-/** |
- * [ReceivePort]s, together with [SendPort]s, are the only means of |
- * communication between isolates. [ReceivePort]s have a [:toSendPort:] method |
- * which returns a [SendPort]. Any message that is sent through this [SendPort] |
- * is delivered to the [ReceivePort] it has been created from. There, they are |
- * dispatched to the callback that has been registered on the receive port. |
- * |
- * A [ReceivePort] may have many [SendPort]s. |
- */ |
-interface ReceivePort default ReceivePortFactory { |
- |
- /** |
- * Opens a long-lived port for receiving messages. The returned port |
- * must be explicitly closed through [ReceivePort.close]. |
- */ |
- ReceivePort(); |
- |
- /** |
- * Opens a single-shot reply port. Once a message has been received |
- * on this port, it is automatically closed -- obviously without |
- * throwing the message away before it can be processed. This |
- * constructor is used indirectly through [SendPort.call]. |
- */ |
- ReceivePort.singleShot(); |
- |
- /** |
- * Sets up a callback function for receiving pending or future |
- * messages on this receive port. |
- */ |
- void receive(void callback(var message, SendPort replyTo)); |
- |
- /** |
- * Closes this receive port immediately. Pending messages will not |
- * be processed and it is impossible to re-open the port. Single-shot |
- * reply ports, such as those created through [SendPort.call], are |
- * automatically closed when the reply has been received. Multiple |
- * invocations of [close] are allowed but ignored. |
- */ |
- void close(); |
- |
- /** |
- * Creates a new send port that sends to this receive port. It is legal to |
- * create several [SendPort]s from the same [ReceivePort]. |
- */ |
- SendPort toSendPort(); |
- |
-} |
- |
-/** |
- * The [Isolate] class serves two purposes: (1) as template for spawning a new |
- * isolate, and (2) as entry-point for the newly spawned isolate. |
- * |
- * New isolates are spawned by sub-classing [Isolate] and then invoking |
- * [:spawn:] on the instance. This will spawn a new isolate, which creates a |
- * new instance of the class, initializes the instance's [port] field |
- * and invokes the instance method [main]. |
- * |
- * The new instance is created by invoking the default constructor of the |
- * class that served as template for spawning the new isolate. This means, that |
- * sub-classes must have a default constructor (i.e. no-argument constructor). |
- * |
- * Isolates may be "heavy" or "light". Heavy isolates live in their own thread, |
- * whereas "light" isolates live in the same thread as the isolate which spawned |
- * them. |
- */ |
-// TODO(sigmund): delete once we implement the new isolates in the vm |
-class Isolate { |
- |
- /** |
- * Redirects to [Isolate.light]. |
- */ |
- Isolate() : this.light(); |
- |
- /** |
- * Creates a new isolate-template for a light isolate. |
- */ |
- Isolate.light() : _isLight = true; |
- |
- /** |
- * Creates a new isolate-template for a heavy isolate. |
- */ |
- Isolate.heavy() : _isLight = false; |
- |
- /** |
- * Spawns a new isolate, using this instance as template. |
- * |
- * The new isolate lives in a new thread (for heavy templates) |
- * or in the same thread as the current isolate (for light templates), if |
- * possible. |
- * |
- * During the initialization of the new isolate a [ReceivePort] is created |
- * inside the new isolate and stored in the read-only field [port]. |
- * A corresponding [SendPort] is sent to the isolate that invoked [spawn]. |
- * Since spawning an isolate is an asynchronous operation this method returns |
- * a [Future] of this [SendPort]. |
- * |
- * A common pattern to instantiate new isolates is to enqueue the instructions |
- * using [Future.then]. |
- * [:myIsolate.spawn().then((SendPort port) { port.send('hi there'); });:] |
- */ |
- Future<SendPort> spawn() { |
- return IsolateNatives.spawn(this, _isLight); |
- } |
- |
- // The private run method is invoked with the receive port. Before |
- // main is invoked we store the port in a field so it can be |
- // accessed from subclasses of Isolate. |
- void _run(ReceivePort port) { |
- _port = port; |
- main(); |
- } |
- |
- /** |
- * When [Isolate]s are used as entry-points, the [port] field contains a |
- * [ReceivePort]. The isolate that initiated the spawn holds a corresponding |
- * [SendPort]. |
- * |
- * Note that isolates should generally close their [ReceivePort]s when they |
- * are done, including this port. |
- */ |
- ReceivePort get port() { |
- return _port; |
- } |
- |
- /** |
- * When isolates are created, an instance of the template's class is |
- * instantiated in the new isolate. After the [port] has been set up, this |
- * [main] method is invoked on the instance. |
- */ |
- abstract void main(); |
- |
- final bool _isLight; |
- ReceivePort _port; |
-} |