blob: 60c5929aab7c1b904253430496e536a2ac5ba3cd [file] [log] [blame]
// 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.
*/
factory Capability() = _CapabilityImpl;
}