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

Unified Diff: runtime/lib/isolate.dart

Issue 9422019: isolates refactor: this change introduces 'dart:isolate' as a library. This is a (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: '' Created 8 years, 10 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
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";
-}

Powered by Google App Engine
This is Rietveld 408576698