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

Unified Diff: sdk/lib/isolate/isolate.dart

Issue 293393005: Make methods on isolate external. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 7 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 | « sdk/lib/_internal/lib/isolate_patch.dart ('k') | tests/isolate/isolate.status » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: sdk/lib/isolate/isolate.dart
diff --git a/sdk/lib/isolate/isolate.dart b/sdk/lib/isolate/isolate.dart
index 4a4a104d9c75842db406df2a9678e255ee36afba..46832184737501c6cb79f6a9a0db663ed2435c61 100644
--- a/sdk/lib/isolate/isolate.dart
+++ b/sdk/lib/isolate/isolate.dart
@@ -143,14 +143,13 @@ class Isolate {
*/
Capability pause([Capability resumeCapability]) {
if (resumeCapability == null) resumeCapability = new Capability();
- var message = new List(3)
- ..[0] = "pause"
- ..[1] = pauseCapability
- ..[2] = resumeCapability;
- controlPort.send(message);
+ _pause(resumeCapability);
return resumeCapability;
}
+ /** Internal implementation of [pause]. */
+ external void _pause(Capability resumeCapability);
+
/**
* Resumes a paused isolate.
*
@@ -165,12 +164,7 @@ class Isolate {
* The capability must be one returned by a call to [pause] on this
* isolate, otherwise the resume call does nothing.
*/
- void resume(Capability resumeCapability) {
- var message = new List(2)
- ..[0] = "resume"
- ..[1] = resumeCapability;
- controlPort.send(message);
- }
+ external void resume(Capability resumeCapability);
/**
* Asks the isolate to send a message on [responsePort] when it terminates.
@@ -182,17 +176,11 @@ class Isolate {
* has been sent.
*
* If the isolate is already dead, no message will be sent.
- * TODO(lrn): Can we do better? Can the system recognize this message and
+ */
+ /* TODO(lrn): Can we do better? Can the system recognize this message and
* send a reply if the receiving isolate is dead?
*/
- void addOnExitListener(SendPort responsePort) {
- // TODO(lrn): Can we have an internal method that checks if the receiving
- // isolate of a SendPort is still alive?
- var message = new List(2)
- ..[0] = "add-ondone"
- ..[1] = responsePort;
- controlPort.send(message);
- }
+ external void addOnExitListener(SendPort responsePort);
/**
* Stop listening on exit messages from the isolate.
@@ -205,12 +193,7 @@ class Isolate {
* A response may still be sent until this operation is fully processed by
* the isolate.
*/
- void removeOnExitListener(SendPort responsePort) {
- var message = new List(2)
- ..[0] = "remove-ondone"
- ..[1] = responsePort;
- controlPort.send(message);
- }
+ external void removeOnExitListener(SendPort responsePort);
/**
* Set whether uncaught errors will terminate the isolate.
@@ -223,13 +206,7 @@ class Isolate {
* This call requires the [terminateCapability] for the isolate.
* If the capability is not correct, no change is made.
*/
- void setErrorsFatal(bool errorsAreFatal) {
- var message = new List(3)
- ..[0] = "set-errors-fatal"
- ..[1] = terminateCapability
- ..[2] = errorsAreFatal;
- controlPort.send(message);
- }
+ external void setErrorsFatal(bool errorsAreFatal);
/**
* Requests the isolate to shut down.
@@ -262,9 +239,7 @@ class Isolate {
* messages that affect normal events, including `pause`.
* This can be used to wait for a another event to be processed.
*/
- void kill([int priority = BEFORE_NEXT_EVENT]) {
- controlPort.send(["kill", terminateCapability, priority]);
- }
+ external void kill([int priority = BEFORE_NEXT_EVENT]);
/**
* Request that the isolate send a response on the [responsePort].
@@ -292,17 +267,13 @@ class Isolate {
* messages that affect normal events, including `pause`.
* This can be used to wait for a another event to be processed.
*/
- void ping(SendPort responsePort, [int pingType = IMMEDIATE]) {
- var message = new List(3)
- ..[0] = "ping"
- ..[1] = responsePort
- ..[2] = pingType;
- controlPort.send(message);
- }
+ external void ping(SendPort responsePort, [int pingType = IMMEDIATE]);
/**
* Requests that uncaught errors of the isolate are sent back to [port].
*
+ * WARNING: This method is experimental and not handled on every platform yet.
+ *
* The errors are sent back as two elements lists.
* The first element is a `String` representation of the error, usually
* created by calling `toString` on the error.
@@ -312,16 +283,13 @@ class Isolate {
* Listening using the same port more than once does nothing. It will only
* get each error once.
*/
- void addErrorListener(SendPort port) {
- var message = new List(2)
- ..[0] = "getErrors"
- ..[1] = port;
- controlPort.send(message);
- }
+ external void addErrorListener(SendPort port);
/**
* Stop listening for uncaught errors through [port].
*
+ * WARNING: This method is experimental and not handled on every platform yet.
+ *
* The `port` should be a port that is listening for errors through
* [addErrorListener]. This call requests that the isolate stops sending
* errors on the port.
@@ -333,12 +301,7 @@ class Isolate {
* Closing the receive port at the end of the send port will not stop the
* isolate from sending errors, they are just going to be lost.
*/
- void removeErrorListener(SendPort port) {
- var message = new List(2)
- ..[0] = "stopErrors"
- ..[1] = port;
- controlPort.send(message);
- }
+ external void removeErrorListener(SendPort port);
/**
* Returns a broadcast stream of uncaught errors from the isolate.
« no previous file with comments | « sdk/lib/_internal/lib/isolate_patch.dart ('k') | tests/isolate/isolate.status » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698