OLD | NEW |
| (Empty) |
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | |
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. | |
4 | |
5 // TODO(sigmund): separate isolates from dart:core | |
6 // #library('dart:isolate'); | |
7 | |
8 /** | |
9 * [Isolate2] provides APIs to spawn, communicate, and stop an isolate. An | |
10 * isolate can be spawned by simply creating a new instance of [Isolate2]. The | |
11 * [Isolate2] instance exposes a port to communicate with the isolate and | |
12 * methods to control its behavior remotely. | |
13 */ | |
14 // TODO(sigmund): rename to Isolate once we delete the old implementation | |
15 interface Isolate2 default IsolateFactory { | |
16 | |
17 /** | |
18 * Create and spawn an isolate that shares the same code as the current | |
19 * isolate, but that starts from [topLevelFunction]. The [topLevelFunction] | |
20 * argument must be a static method closure that takes exactly one | |
21 * argument of type [ReceivePort]. It is illegal to pass a function closure | |
22 * that captures values in scope. | |
23 * | |
24 * When an child isolate is spawned, a new [ReceivePort] is created for it. | |
25 * This port is passed to [topLevelFunction]. A [SendPort] derived from | |
26 * such port is sent to the spawner isolate, which is accessible in | |
27 * [Isolate2.sendPort] field of this instance. | |
28 */ | |
29 Isolate2.fromCode(Function topLevelFunction); | |
30 | |
31 /** | |
32 * Create and spawn an isolate whose code is available at [uri]. | |
33 * The code in [uri] must have an method called [: isolateMain :], which takes | |
34 * exactly one argument of type [ReceivePort]. | |
35 * Like with [Isolate2.fromCode], a [ReceivePort] is created in the child | |
36 * isolate, and a [SendPort] to it is stored in [Isolate2.sendPort]. | |
37 */ | |
38 Isolate2.fromUri(String uri); | |
39 | |
40 /** Port used to communicate with this isolate. */ | |
41 SendPort sendPort; | |
42 | |
43 /** Stop this isolate. */ | |
44 void stop(); | |
45 } | |
46 | |
OLD | NEW |