Index: runtime/lib/isolate.dart |
diff --git a/runtime/lib/isolate.dart b/runtime/lib/isolate.dart |
deleted file mode 100644 |
index 13ec8dd66cd9f39bfcfb6878fbeea9f35e76e278..0000000000000000000000000000000000000000 |
--- a/runtime/lib/isolate.dart |
+++ /dev/null |
@@ -1,157 +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. |
- |
-class ReceivePortFactory { |
- factory ReceivePort() { |
- return new ReceivePortImpl(); |
- } |
- |
- factory ReceivePort.singleShot() { |
- return new ReceivePortSingleShotImpl(); |
- } |
-} |
- |
- |
-class ReceivePortImpl implements ReceivePort { |
- /*--- public interface ---*/ |
- factory ReceivePortImpl() native "ReceivePortImpl_factory"; |
- |
- receive(void onMessage(var message, SendPort replyTo)) { |
- _onMessage = onMessage; |
- } |
- |
- close() { |
- _portMap.remove(_id); |
- _closeInternal(_id); |
- } |
- |
- SendPort toSendPort() { |
- return new SendPortImpl(_id); |
- } |
- |
- /**** Internal implementation details ****/ |
- // Called from the VM to create a new ReceivePort instance. |
- static ReceivePortImpl _get_or_create(int id) { |
- if (_portMap !== null) { |
- ReceivePortImpl port = _portMap[id]; |
- if (port !== null) { |
- return port; |
- } |
- } |
- return new ReceivePortImpl._internal(id); |
- } |
- ReceivePortImpl._internal(int id) : _id = id { |
- if (_portMap === null) { |
- _portMap = new Map(); |
- } |
- _portMap[id] = this; |
- } |
- |
- // Called from the VM to dispatch to the handler. |
- static void _handleMessage(int id, int replyId, var message) { |
- assert(_portMap !== null); |
- ReceivePort port = _portMap[id]; |
- SendPort replyTo = (replyId == 0) ? null : new SendPortImpl(replyId); |
- (port._onMessage)(message, replyTo); |
- } |
- |
- // Call into the VM to close the VM maintained mappings. |
- static _closeInternal(int id) native "ReceivePortImpl_closeInternal"; |
- |
- final int _id; |
- var _onMessage; |
- |
- // id to ReceivePort mapping. |
- static Map _portMap; |
-} |
- |
- |
-class ReceivePortSingleShotImpl implements ReceivePort { |
- |
- ReceivePortSingleShotImpl() : _port = new ReceivePortImpl() { } |
- |
- void receive(void callback(var message, SendPort replyTo)) { |
- _port.receive((var message, SendPort replyTo) { |
- _port.close(); |
- callback(message, replyTo); |
- }); |
- } |
- |
- void close() { |
- _port.close(); |
- } |
- |
- SendPort toSendPort() { |
- return _port.toSendPort(); |
- } |
- |
- final ReceivePortImpl _port; |
- |
-} |
- |
- |
-class SendPortImpl implements SendPort { |
- /*--- public interface ---*/ |
- void send(var message, [SendPort replyTo = null]) { |
- this._sendNow(message, replyTo); |
- } |
- |
- void _sendNow(var message, SendPort replyTo) { |
- int replyId = (replyTo === null) ? 0 : replyTo._id; |
- _sendInternal(_id, replyId, message); |
- } |
- |
- ReceivePortSingleShotImpl call(var message) { |
- final result = new ReceivePortSingleShotImpl(); |
- this.send(message, result.toSendPort()); |
- return result; |
- } |
- |
- ReceivePortSingleShotImpl _callNow(var message) { |
- final result = new ReceivePortSingleShotImpl(); |
- this._sendNow(message, result.toSendPort()); |
- return result; |
- } |
- |
- bool operator==(var other) { |
- return (other is SendPortImpl) && _id == other._id; |
- } |
- |
- int hashCode() { |
- return _id; |
- } |
- |
- /*--- private implementation ---*/ |
- const SendPortImpl(int id) : _id = id; |
- |
- // SendPortImpl._create is called from the VM when a new SendPort instance is |
- // needed by the VM code. |
- static SendPort _create(int id) { |
- return new SendPortImpl(id); |
- } |
- |
- // Forward the implementation of sending messages to the VM. Only port ids |
- // are being handed to the VM. |
- static _sendInternal(int sendId, int replyId, var message) |
- native "SendPortImpl_sendInternal_"; |
- |
- final int _id; |
-} |
- |
- |
-class IsolateNatives { |
- static Future<SendPort> spawn(Isolate isolate, bool isLight) { |
- Completer<SendPort> completer = new Completer<SendPort>(); |
- SendPort port = _start(isolate, isLight); |
- completer.complete(port); |
- return completer.future; |
- } |
- |
- // Starts a new isolate calling the run method on a new instance of the |
- // remote class's type. |
- // Returns the send port which is passed to the newly created isolate. |
- // This method is being dispatched to from the public core library code. |
- static SendPort _start(Isolate isolate, bool light) |
- native "IsolateNatives_start"; |
-} |