pub struct CapabilityStore;
Expand description
The type corresponding to the CapabilityStore protocol. Protocol that represents the concept of a “capability store”, a repository for Capabilitys that are held by the component framework runtime.
CapabilityStore serves as the main bridge between the component runtime and clients that enables them to operate on and exchange Capabilitys. A CapabilityStore instance contains a set of Capabilitys, each of which has a CapabilityId assigned by the client.
Normally, a program would not exchange a CapabilityStore or CapabilityId with other programs – a CapabilityStore connection and its enclosed capabilities are intended to be “local” to a program. Instead, if a program wishes to exchange a Capability with other programs, it should [Export] the Capability out of the store, send the Capability to the target program, which can then [Import] the capability into its own store.
CapabilityStore is also used to manage capability lifetimes. The lifetime of a capability is scoped to the CapabilityStore in which it resides; i.e. to drop the CapabilityStore connections to release the capabilities instead it. In addition, CapabilityStore supports a Drop API to drop an individual Capability reference. (Note that it is possible for a some capabilities, like DictionaryRef, to have multiple references, in which case all of the references must be dropped for the underlying resource to be released.)
A note about semantics: the CapabilityStore APIs do not return CapabilityIds, because CapabilityIds are assigned by the client. Instead, when a method would semantically return a capability, this is expressed by taking the destination CapabilityId as an output parameter.
Trait Implementations§
Source§impl<___T, ___H> ClientProtocol<___T, ___H> for CapabilityStorewhere
___T: Transport,
___H: CapabilityStoreClientHandler<___T>,
<Duplicate as Method>::Response: Decode<<___T as Transport>::RecvBuffer>,
<Drop as Method>::Response: Decode<<___T as Transport>::RecvBuffer>,
<Export as Method>::Response: Decode<<___T as Transport>::RecvBuffer>,
<Import as Method>::Response: Decode<<___T as Transport>::RecvBuffer>,
<ConnectorCreate as Method>::Response: Decode<<___T as Transport>::RecvBuffer>,
<ConnectorOpen as Method>::Response: Decode<<___T as Transport>::RecvBuffer>,
<DirConnectorCreate as Method>::Response: Decode<<___T as Transport>::RecvBuffer>,
<DirConnectorOpen as Method>::Response: Decode<<___T as Transport>::RecvBuffer>,
<DictionaryCreate as Method>::Response: Decode<<___T as Transport>::RecvBuffer>,
<DictionaryLegacyImport as Method>::Response: Decode<<___T as Transport>::RecvBuffer>,
<DictionaryLegacyExport as Method>::Response: Decode<<___T as Transport>::RecvBuffer>,
<DictionaryInsert as Method>::Response: Decode<<___T as Transport>::RecvBuffer>,
<DictionaryGet as Method>::Response: Decode<<___T as Transport>::RecvBuffer>,
<DictionaryRemove as Method>::Response: Decode<<___T as Transport>::RecvBuffer>,
<DictionaryCopy as Method>::Response: Decode<<___T as Transport>::RecvBuffer>,
<DictionaryKeys as Method>::Response: Decode<<___T as Transport>::RecvBuffer>,
<DictionaryEnumerate as Method>::Response: Decode<<___T as Transport>::RecvBuffer>,
<DictionaryDrain as Method>::Response: Decode<<___T as Transport>::RecvBuffer>,
impl<___T, ___H> ClientProtocol<___T, ___H> for CapabilityStorewhere
___T: Transport,
___H: CapabilityStoreClientHandler<___T>,
<Duplicate as Method>::Response: Decode<<___T as Transport>::RecvBuffer>,
<Drop as Method>::Response: Decode<<___T as Transport>::RecvBuffer>,
<Export as Method>::Response: Decode<<___T as Transport>::RecvBuffer>,
<Import as Method>::Response: Decode<<___T as Transport>::RecvBuffer>,
<ConnectorCreate as Method>::Response: Decode<<___T as Transport>::RecvBuffer>,
<ConnectorOpen as Method>::Response: Decode<<___T as Transport>::RecvBuffer>,
<DirConnectorCreate as Method>::Response: Decode<<___T as Transport>::RecvBuffer>,
<DirConnectorOpen as Method>::Response: Decode<<___T as Transport>::RecvBuffer>,
<DictionaryCreate as Method>::Response: Decode<<___T as Transport>::RecvBuffer>,
<DictionaryLegacyImport as Method>::Response: Decode<<___T as Transport>::RecvBuffer>,
<DictionaryLegacyExport as Method>::Response: Decode<<___T as Transport>::RecvBuffer>,
<DictionaryInsert as Method>::Response: Decode<<___T as Transport>::RecvBuffer>,
<DictionaryGet as Method>::Response: Decode<<___T as Transport>::RecvBuffer>,
<DictionaryRemove as Method>::Response: Decode<<___T as Transport>::RecvBuffer>,
<DictionaryCopy as Method>::Response: Decode<<___T as Transport>::RecvBuffer>,
<DictionaryKeys as Method>::Response: Decode<<___T as Transport>::RecvBuffer>,
<DictionaryEnumerate as Method>::Response: Decode<<___T as Transport>::RecvBuffer>,
<DictionaryDrain as Method>::Response: Decode<<___T as Transport>::RecvBuffer>,
Source§impl Debug for CapabilityStore
impl Debug for CapabilityStore
Source§impl Discoverable for CapabilityStore
impl Discoverable for CapabilityStore
Source§const PROTOCOL_NAME: &'static str = "capability_store"
const PROTOCOL_NAME: &'static str = "capability_store"
Source§impl<___T, ___H> ServerProtocol<___T, ___H> for CapabilityStorewhere
___T: Transport,
___H: CapabilityStoreServerHandler<___T>,
WireCapabilityStoreDuplicateRequest: Decode<<___T as Transport>::RecvBuffer>,
WireCapabilityStoreDropRequest: Decode<<___T as Transport>::RecvBuffer>,
WireCapabilityStoreExportRequest: Decode<<___T as Transport>::RecvBuffer>,
WireCapabilityStoreImportRequest: Decode<<___T as Transport>::RecvBuffer>,
WireCapabilityStoreConnectorCreateRequest: Decode<<___T as Transport>::RecvBuffer>,
WireCapabilityStoreConnectorOpenRequest: Decode<<___T as Transport>::RecvBuffer>,
WireCapabilityStoreDirConnectorCreateRequest: Decode<<___T as Transport>::RecvBuffer>,
WireCapabilityStoreDirConnectorOpenRequest: Decode<<___T as Transport>::RecvBuffer>,
WireCapabilityStoreDictionaryCreateRequest: Decode<<___T as Transport>::RecvBuffer>,
WireCapabilityStoreDictionaryLegacyImportRequest: Decode<<___T as Transport>::RecvBuffer>,
WireCapabilityStoreDictionaryLegacyExportRequest: Decode<<___T as Transport>::RecvBuffer>,
WireCapabilityStoreDictionaryInsertRequest: Decode<<___T as Transport>::RecvBuffer>,
WireCapabilityStoreDictionaryGetRequest: Decode<<___T as Transport>::RecvBuffer>,
WireCapabilityStoreDictionaryRemoveRequest: Decode<<___T as Transport>::RecvBuffer>,
WireCapabilityStoreDictionaryCopyRequest: Decode<<___T as Transport>::RecvBuffer>,
WireCapabilityStoreDictionaryKeysRequest: Decode<<___T as Transport>::RecvBuffer>,
WireCapabilityStoreDictionaryEnumerateRequest: Decode<<___T as Transport>::RecvBuffer>,
WireCapabilityStoreDictionaryDrainRequest: Decode<<___T as Transport>::RecvBuffer>,
impl<___T, ___H> ServerProtocol<___T, ___H> for CapabilityStorewhere
___T: Transport,
___H: CapabilityStoreServerHandler<___T>,
WireCapabilityStoreDuplicateRequest: Decode<<___T as Transport>::RecvBuffer>,
WireCapabilityStoreDropRequest: Decode<<___T as Transport>::RecvBuffer>,
WireCapabilityStoreExportRequest: Decode<<___T as Transport>::RecvBuffer>,
WireCapabilityStoreImportRequest: Decode<<___T as Transport>::RecvBuffer>,
WireCapabilityStoreConnectorCreateRequest: Decode<<___T as Transport>::RecvBuffer>,
WireCapabilityStoreConnectorOpenRequest: Decode<<___T as Transport>::RecvBuffer>,
WireCapabilityStoreDirConnectorCreateRequest: Decode<<___T as Transport>::RecvBuffer>,
WireCapabilityStoreDirConnectorOpenRequest: Decode<<___T as Transport>::RecvBuffer>,
WireCapabilityStoreDictionaryCreateRequest: Decode<<___T as Transport>::RecvBuffer>,
WireCapabilityStoreDictionaryLegacyImportRequest: Decode<<___T as Transport>::RecvBuffer>,
WireCapabilityStoreDictionaryLegacyExportRequest: Decode<<___T as Transport>::RecvBuffer>,
WireCapabilityStoreDictionaryInsertRequest: Decode<<___T as Transport>::RecvBuffer>,
WireCapabilityStoreDictionaryGetRequest: Decode<<___T as Transport>::RecvBuffer>,
WireCapabilityStoreDictionaryRemoveRequest: Decode<<___T as Transport>::RecvBuffer>,
WireCapabilityStoreDictionaryCopyRequest: Decode<<___T as Transport>::RecvBuffer>,
WireCapabilityStoreDictionaryKeysRequest: Decode<<___T as Transport>::RecvBuffer>,
WireCapabilityStoreDictionaryEnumerateRequest: Decode<<___T as Transport>::RecvBuffer>,
WireCapabilityStoreDictionaryDrainRequest: Decode<<___T as Transport>::RecvBuffer>,
Source§fn on_one_way(
handler: &mut ___H,
sender: &ServerSender<___T, Self>,
ordinal: u64,
buffer: ___T::RecvBuffer,
)
fn on_one_way( handler: &mut ___H, sender: &ServerSender<___T, Self>, ordinal: u64, buffer: ___T::RecvBuffer, )
Source§fn on_two_way(
handler: &mut ___H,
sender: &ServerSender<___T, Self>,
ordinal: u64,
buffer: ___T::RecvBuffer,
responder: Responder,
)
fn on_two_way( handler: &mut ___H, sender: &ServerSender<___T, Self>, ordinal: u64, buffer: ___T::RecvBuffer, responder: Responder, )
Source§impl TakeFrom<CapabilityStore> for CapabilityStoreMarker
impl TakeFrom<CapabilityStore> for CapabilityStoreMarker
Source§fn take_from(from: &CapabilityStore) -> Self
fn take_from(from: &CapabilityStore) -> Self
T
, taking any resources that can’t be cloned.§const COPY_OPTIMIZATION: CopyOptimization<Self> = _
const COPY_OPTIMIZATION: CopyOptimization<Self> = _
take_from
. Read more