Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 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 | 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. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 import "dart:collection" show HashMap; | 5 import "dart:collection" show HashMap; |
| 6 | 6 |
| 7 patch class ReceivePort { | 7 patch class ReceivePort { |
| 8 /* patch */ factory ReceivePort() = _ReceivePortImpl; | 8 /* patch */ factory ReceivePort() = _ReceivePortImpl; |
| 9 | 9 |
| 10 /* patch */ factory ReceivePort.fromRawReceivePort(RawReceivePort rawPort) = | 10 /* patch */ factory ReceivePort.fromRawReceivePort(RawReceivePort rawPort) = |
| 11 _ReceivePortImpl.fromRawReceivePort; | 11 _ReceivePortImpl.fromRawReceivePort; |
| 12 } | 12 } |
| 13 | 13 |
| 14 patch class Capability { | 14 patch class Capability { |
| 15 /* patch */ factory Capability() = _CapabilityImpl; | 15 /* patch */ factory Capability() = _CapabilityImpl; |
| 16 } | 16 } |
| 17 | 17 |
| 18 class _CapabilityImpl implements Capability { | 18 class _CapabilityImpl implements Capability { |
| 19 factory _CapabilityImpl() native "CapabilityImpl_factory"; | 19 factory _CapabilityImpl() native "CapabilityImpl_factory"; |
| 20 | |
| 21 String toString() => "Capability#"; | |
| 20 } | 22 } |
| 21 | 23 |
| 22 patch class RawReceivePort { | 24 patch class RawReceivePort { |
| 23 /** | 25 /** |
| 24 * Opens a long-lived port for receiving messages. | 26 * Opens a long-lived port for receiving messages. |
| 25 * | 27 * |
| 26 * A [RawReceivePort] is low level and does not work with [Zone]s. It | 28 * A [RawReceivePort] is low level and does not work with [Zone]s. It |
| 27 * can not be paused. The data-handler must be set before the first | 29 * can not be paused. The data-handler must be set before the first |
| 28 * event is received. | 30 * event is received. |
| 29 */ | 31 */ |
| (...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 238 } else { | 240 } else { |
| 239 entryPoint(); | 241 entryPoint(); |
| 240 } | 242 } |
| 241 } else { | 243 } else { |
| 242 entryPoint(message); | 244 entryPoint(message); |
| 243 } | 245 } |
| 244 _runPendingImmediateCallback(); | 246 _runPendingImmediateCallback(); |
| 245 } | 247 } |
| 246 | 248 |
| 247 patch class Isolate { | 249 patch class Isolate { |
| 250 static final _currentIsolate = _getCurrentIsolate(); | |
| 251 | |
| 252 /* patch */ static Isolate get current => _currentIsolate; | |
| 253 | |
| 248 /* patch */ static Future<Isolate> spawn( | 254 /* patch */ static Future<Isolate> spawn( |
| 249 void entryPoint(message), var message, { bool paused: false }) { | 255 void entryPoint(message), var message, { bool paused: false }) { |
| 250 // `paused` isn't handled yet. | 256 // `paused` isn't handled yet. |
| 251 RawReceivePort readyPort; | 257 RawReceivePort readyPort; |
| 252 try { | 258 try { |
| 253 // The VM will invoke [_startIsolate] with entryPoint as argument. | 259 // The VM will invoke [_startIsolate] with entryPoint as argument. |
| 254 readyPort = new RawReceivePort(); | 260 readyPort = new RawReceivePort(); |
| 255 _spawnFunction(readyPort.sendPort, entryPoint, message); | 261 _spawnFunction(readyPort.sendPort, entryPoint, message); |
| 256 Completer completer = new Completer<Isolate>.sync(); | 262 Completer completer = new Completer<Isolate>.sync(); |
| 257 readyPort.handler = (readyMessage) { | 263 readyPort.handler = (readyMessage) { |
| (...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 361 throw new UnsupportedError("ping"); | 367 throw new UnsupportedError("ping"); |
| 362 } | 368 } |
| 363 | 369 |
| 364 /* patch */ void addErrorListener(SendPort port) { | 370 /* patch */ void addErrorListener(SendPort port) { |
| 365 throw new UnsupportedError("addErrorListener"); | 371 throw new UnsupportedError("addErrorListener"); |
| 366 } | 372 } |
| 367 | 373 |
| 368 /* patch */ void removeErrorListener(SendPort port) { | 374 /* patch */ void removeErrorListener(SendPort port) { |
| 369 throw new UnsupportedError("removeErrorListener"); | 375 throw new UnsupportedError("removeErrorListener"); |
| 370 } | 376 } |
| 377 | |
| 378 static Isolate _getCurrentIsolate() { | |
| 379 List portAndCapabilities = _getCurrent(); | |
| 380 return new Isolate(portAndCapabilities[0], | |
| 381 pauseCapability: portAndCapabilities[1], | |
| 382 terminateCapability: portAndCapabilities[2]); | |
| 383 } | |
| 384 | |
| 385 static List _getCurrent() native "Isolate_getCurrent"; | |
|
floitsch
2014/12/02 12:13:56
s/_getCurrent()/_getPortAndCapabilitiesOfCurrentIs
| |
| 371 } | 386 } |
| OLD | NEW |