Index: sdk/lib/isolate/capability.dart |
diff --git a/sdk/lib/isolate/capability.dart b/sdk/lib/isolate/capability.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..a51eec21061a50d9adf107836548399d3b169bce |
--- /dev/null |
+++ b/sdk/lib/isolate/capability.dart |
@@ -0,0 +1,34 @@ |
+// Copyright (c) 2014, 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. |
+ |
+part of dart.isolate; |
+ |
+/** |
+ * An unforgeable object that comes back as equal when passed through other |
+ * isolates. |
+ * |
+ * Sending a capability object to another isolate, and getting it back, |
+ * will produce an object that is equal to the original. |
+ * There is no other way to create objects equal to a capability object. |
+ * |
+ * Capabilities can be used as access guards: A remote isolate can send |
+ * a request for an operation, but it is only allowed if the request contains |
+ * the correct capability object. |
+ * |
+ * This allows exposing the same interface to multiple clients, |
+ * but restricting some operations to only those clients |
+ * that have also been given the corresponding capability. |
+ * |
+ * Capabilities can be used inside a single isolate, |
+ * but they have no advantage over |
+ * just using `new Object` to create a unique object, |
+ * and it offers no real security against other code |
+ * running in the same isolate. |
+ */ |
+class Capability { |
+ /** |
+ * Create a new unforgeable capability object. |
+ */ |
+ external factory Capability(); |
+} |