| Index: sdk/lib/isolate/isolate.dart
|
| diff --git a/sdk/lib/isolate/isolate.dart b/sdk/lib/isolate/isolate.dart
|
| index 35d2a8b15c90cb444672753f7b197714faa39ab3..66b0e227ea27e4bf74b38286d1ee55aade205b76 100644
|
| --- a/sdk/lib/isolate/isolate.dart
|
| +++ b/sdk/lib/isolate/isolate.dart
|
| @@ -63,8 +63,6 @@ class Isolate {
|
| static const int IMMEDIATE = 0;
|
| /** Argument to `ping` and `kill`: Ask for action before the next event. */
|
| static const int BEFORE_NEXT_EVENT = 1;
|
| - /** Argument to `ping` and `kill`: Ask for action after normal events. */
|
| - static const int AS_EVENT = 2;
|
|
|
| /**
|
| * Control port used to send control messages to the isolate.
|
| @@ -259,20 +257,26 @@ class Isolate {
|
| external void resume(Capability resumeCapability);
|
|
|
| /**
|
| - * Asks the isolate to send a message on [responsePort] when it terminates.
|
| + * Asks the isolate to send [response] on [responsePort] when it terminates.
|
| *
|
| * WARNING: This method is experimental and not handled on every platform yet.
|
| *
|
| - * The isolate will send a `null` message on [responsePort] as the last
|
| + * The isolate will send a `response` message on `responsePort` as the last
|
| * thing before it terminates. It will run no further code after the message
|
| * has been sent.
|
| *
|
| + * Adding the same port more than once will only cause it to receive one
|
| + * message, using the last response value that was added.
|
| + *
|
| * If the isolate is already dead, no message will be sent.
|
| + * If `response` cannot be sent to the isolate, then the request is ignored.
|
| + * It is recommended to only use simple values that can be sent to all
|
| + * isolates, like `null`, booleans, numbers or strings.
|
| */
|
| /* TODO(lrn): Can we do better? Can the system recognize this message and
|
| * send a reply if the receiving isolate is dead?
|
| */
|
| - external void addOnExitListener(SendPort responsePort);
|
| + external void addOnExitListener(SendPort responsePort, {Object response});
|
|
|
| /**
|
| * Stop listening on exit messages from the isolate.
|
| @@ -308,8 +312,7 @@ class Isolate {
|
| * The isolate is requested to terminate itself.
|
| * The [priority] argument specifies when this must happen.
|
| *
|
| - * The [priority] must be one of [IMMEDIATE], [BEFORE_NEXT_EVENT] or
|
| - * [AS_EVENT].
|
| + * The [priority] must be one of [IMMEDIATE] or [BEFORE_NEXT_EVENT].
|
| * The shutdown is performed at different times depending on the priority:
|
| *
|
| * * `IMMEDIATE`: The the isolate shuts down as soon as possible.
|
| @@ -323,44 +326,35 @@ class Isolate {
|
| * control returns to the event loop of the receiving isolate,
|
| * after the current event, and any already scheduled control events,
|
| * are completed.
|
| - * * `AS_EVENT`: The shutdown does not happen until all prevously sent
|
| - * non-control messages from the current isolate to the receiving isolate
|
| - * have been processed.
|
| - * The kill operation effectively puts the shutdown into the normal event
|
| - * queue after previously sent messages, and it is affected by any control
|
| - * messages that affect normal events, including `pause`.
|
| - * This can be used to wait for a another event to be processed.
|
| */
|
| - external void kill([int priority = BEFORE_NEXT_EVENT]);
|
| + external void kill({int priority: BEFORE_NEXT_EVENT});
|
|
|
| /**
|
| - * Request that the isolate send a response on the [responsePort].
|
| + * Request that the isolate send [response] on the [responsePort].
|
| *
|
| * WARNING: This method is experimental and not handled on every platform yet.
|
| *
|
| - * If the isolate is alive, it will eventually send a `null` response on
|
| - * the response port.
|
| + * If the isolate is alive, it will eventually send `response`
|
| + * (defaulting to `null`) on the response port.
|
| *
|
| - * The [pingType] must be one of [IMMEDIATE], [BEFORE_NEXT_EVENT] or
|
| - * [AS_EVENT].
|
| + * The [priority] must be one of [IMMEDIATE] or [BEFORE_NEXT_EVENT].
|
| * The response is sent at different times depending on the ping type:
|
| *
|
| * * `IMMEDIATE`: The the isolate responds as soon as it receives the
|
| * control message. This is after any previous control message
|
| - * from the same isolate has been received.
|
| + * from the same isolate has been received, but may be during
|
| + * execution of another event.
|
| * * `BEFORE_NEXT_EVENT`: The response is scheduled for the next time
|
| * control returns to the event loop of the receiving isolate,
|
| * after the current event, and any already scheduled control events,
|
| * are completed.
|
| - * * `AS_EVENT`: The response is not sent until all prevously sent
|
| - * non-control messages from the current isolate to the receiving isolate
|
| - * have been processed.
|
| - * The ping effectively puts the response into the normal event queue
|
| - * after previously sent messages, and it is affected by any control
|
| - * messages that affect normal events, including `pause`.
|
| - * This can be used to wait for a another event to be processed.
|
| + *
|
| + * If `response` cannot be sent to the isolate, then the request is ignored.
|
| + * It is recommended to only use simple values that can be sent to all
|
| + * isolates, like `null`, booleans, numbers or strings.
|
| */
|
| - external void ping(SendPort responsePort, [int pingType = IMMEDIATE]);
|
| + external void ping(SendPort responsePort, {Object response,
|
| + int priority: IMMEDIATE});
|
|
|
| /**
|
| * Requests that uncaught errors of the isolate are sent back to [port].
|
|
|