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

Side by Side Diff: sdk/lib/isolate/isolate.dart

Issue 1553233002: Add package config support to dart:isolate (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Addressed review comments. Created 4 years, 11 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 unified diff | Download patch
OLDNEW
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 /** 5 /**
6 * Concurrent programming using _isolates_: 6 * Concurrent programming using _isolates_:
7 * independent workers that are similar to threads 7 * independent workers that are similar to threads
8 * but don't share memory, 8 * but don't share memory,
9 * communicating only via messages. 9 * communicating only via messages.
10 */ 10 */
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
120 /** 120 /**
121 * Return the current [Isolate]. 121 * Return the current [Isolate].
122 * 122 *
123 * The isolate gives access to the capabilities needed to inspect, 123 * The isolate gives access to the capabilities needed to inspect,
124 * pause or kill the isolate, and allows granting these capabilities 124 * pause or kill the isolate, and allows granting these capabilities
125 * to others. 125 * to others.
126 */ 126 */
127 external static Isolate get current; 127 external static Isolate get current;
128 128
129 /** 129 /**
130 * Returns the package root of the current isolate, if any.
131 *
132 * If the isolate is using a [packageConfig] or the isolate has not been
133 * setup for package resolution, this getter returns `null`, otherwise it
134 * returns the package root - a directory that package URIs are resolved
135 * against.
136 */
137 external static Future<Uri> get packageRoot;
138
139 /**
140 * Returns the package root of the current isolate, if any.
141 *
142 * If the isolate is using a [packageRoot] or the isolate has not been
143 * setup for package resolution, this getter returns `null`, otherwise it
144 * returns the package config URI.
145 */
146 external static Future<Uri> get packageConfig;
147
148 /**
149 * Maps a package: URI to a non-package Uri.
150 *
151 * If there is no valid mapping from the package: URI in the current
152 * isolate, then this call returns `null`. Non-package: URIs are
153 * returned unmodified.
154 */
155 external static Future<Uri> resolvePackageUri(Uri packageUri);
156
157 /**
130 * Creates and spawns an isolate that shares the same code as the current 158 * Creates and spawns an isolate that shares the same code as the current
131 * isolate. 159 * isolate.
132 * 160 *
133 * The argument [entryPoint] specifies the entry point of the spawned 161 * The argument [entryPoint] specifies the entry point of the spawned
134 * isolate. It must be a top-level function or a static method that 162 * isolate. It must be a top-level function or a static method that
135 * takes one argument - that is, one-parameter functions that can be 163 * takes one argument - that is, one-parameter functions that can be
136 * compile-time constant function values. 164 * compile-time constant function values.
137 * It is not allowed to pass the value of function expressions or an instance 165 * It is not allowed to pass the value of function expressions or an instance
138 * method extracted from an object. 166 * method extracted from an object.
139 * 167 *
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
215 * If the [packageRoot] parameter is provided, it is used to find the location 243 * If the [packageRoot] parameter is provided, it is used to find the location
216 * of package sources in the spawned isolate. 244 * of package sources in the spawned isolate.
217 * 245 *
218 * The `packageRoot` URI must be a "file" or "http"/"https" URI that specifies 246 * The `packageRoot` URI must be a "file" or "http"/"https" URI that specifies
219 * a directory. If it doesn't end in a slash, one will be added before 247 * a directory. If it doesn't end in a slash, one will be added before
220 * using the URI, and any query or fragment parts are ignored. 248 * using the URI, and any query or fragment parts are ignored.
221 * Package imports (like `"package:foo/bar.dart"`) in the new isolate are 249 * Package imports (like `"package:foo/bar.dart"`) in the new isolate are
222 * resolved against this location, as by 250 * resolved against this location, as by
223 * `packageRoot.resolve("foo/bar.dart")`. 251 * `packageRoot.resolve("foo/bar.dart")`.
224 * 252 *
253 * If the [packageConfig] parameter is provided, then it is used to find the
254 * location of a package resolution configuration file for the spawned
255 * isolate.
256 *
kevmoo 2016/01/13 02:21:19 Need notes on the behavior if both `packageRoot` a
257 * If the [automaticPackageResolution] parameter is provided, then the
kevmoo 2016/01/13 02:21:19 provided => `true`.
258 * location of the package sources in the spawned isolate is automatically
259 * determined.
kevmoo 2016/01/13 02:21:19 determined how? How does this relate to packageRo
260 *
225 * The [environment] is a mapping from strings to strings which the 261 * The [environment] is a mapping from strings to strings which the
226 * spawned isolate uses when looking up [String.fromEnvironment] values. 262 * spawned isolate uses when looking up [String.fromEnvironment] values.
227 * The system may add its own entries to environment as well. 263 * The system may add its own entries to environment as well.
228 * If `environment` is omitted, the spawned isolate has the same environment 264 * If `environment` is omitted, the spawned isolate has the same environment
229 * declarations as the spawning isolate. 265 * declarations as the spawning isolate.
230 * 266 *
231 * WARNING: The [environment] parameter is not implemented on all 267 * WARNING: The [environment] parameter is not implemented on all
232 * platforms yet. 268 * platforms yet.
233 * 269 *
234 * Returns a future that will complete with an [Isolate] instance if the 270 * Returns a future that will complete with an [Isolate] instance if the
235 * spawning succeeded. It will complete with an error otherwise. 271 * spawning succeeded. It will complete with an error otherwise.
236 */ 272 */
237 external static Future<Isolate> spawnUri( 273 external static Future<Isolate> spawnUri(
238 Uri uri, 274 Uri uri,
239 List<String> args, 275 List<String> args,
240 var message, 276 var message,
241 {bool paused: false, 277 {bool paused: false,
242 SendPort onExit, 278 SendPort onExit,
243 SendPort onError, 279 SendPort onError,
244 bool errorsAreFatal, 280 bool errorsAreFatal,
245 bool checked, 281 bool checked,
246 Map<String, String> environment, 282 Map<String, String> environment,
247 Uri packageRoot}); 283 Uri packageRoot,
284 Uri packageConfig,
285 bool automaticPackageResolution: false});
248 286
249 /** 287 /**
250 * Requests the isolate to pause. 288 * Requests the isolate to pause.
251 * 289 *
252 * The isolate should stop handling events by pausing its event queue. 290 * The isolate should stop handling events by pausing its event queue.
253 * The request will eventually make the isolate stop doing anything. 291 * The request will eventually make the isolate stop doing anything.
254 * It will be handled before any other messages that are later sent to the 292 * It will be handled before any other messages that are later sent to the
255 * isolate from the current isolate, but no other guarantees are provided. 293 * isolate from the current isolate, but no other guarantees are provided.
256 * 294 *
257 * The event loop may be paused before previously sent, but not yet exeuted, 295 * The event loop may be paused before previously sent, but not yet exeuted,
(...skipping 356 matching lines...) Expand 10 before | Expand all | Expand 10 after
614 * as the original error, but has no other features of the original error. 652 * as the original error, but has no other features of the original error.
615 */ 653 */
616 class RemoteError implements Error { 654 class RemoteError implements Error {
617 final String _description; 655 final String _description;
618 final StackTrace stackTrace; 656 final StackTrace stackTrace;
619 RemoteError(String description, String stackDescription) 657 RemoteError(String description, String stackDescription)
620 : _description = description, 658 : _description = description,
621 stackTrace = new StackTrace.fromString(stackDescription); 659 stackTrace = new StackTrace.fromString(stackDescription);
622 String toString() => _description; 660 String toString() => _description;
623 } 661 }
OLDNEW
« no previous file with comments | « sdk/lib/_internal/js_runtime/lib/isolate_patch.dart ('k') | tests/isolate/package_config_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698