Struct CapabilityStore

Source
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 CapabilityStore
where ___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§

fn on_event( handler: &mut ___H, sender: &ClientSender<___T, Self>, ordinal: u64, buffer: ___T::RecvBuffer, )

Handles a received client event with the given handler.
Source§

impl Debug for CapabilityStore

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Discoverable for CapabilityStore

Source§

const PROTOCOL_NAME: &'static str = "capability_store"

The service name to use to connect to this discoverable protocol.
Source§

impl<___T, ___H> ServerProtocol<___T, ___H> for CapabilityStore
where ___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, )

Handles a received server one-way message with the given handler.
Source§

fn on_two_way( handler: &mut ___H, sender: &ServerSender<___T, Self>, ordinal: u64, buffer: ___T::RecvBuffer, responder: Responder, )

Handles a received server two-way message with the given handler.
Source§

impl TakeFrom<CapabilityStore> for CapabilityStoreMarker

Source§

fn take_from(from: &CapabilityStore) -> Self

Converts from the given T, taking any resources that can’t be cloned.
§

const COPY_OPTIMIZATION: CopyOptimization<Self> = _

An optimization flag that allows the bytes of this type to be copied directly during conversion instead of calling take_from. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T, D> Encode<Ambiguous1, D> for T
where D: ResourceDialect,

§

unsafe fn encode( self, _encoder: &mut Encoder<'_, D>, _offset: usize, _depth: Depth, ) -> Result<(), Error>

Encodes the object into the encoder’s buffers. Any handles stored in the object are swapped for Handle::INVALID. Read more
§

impl<T, D> Encode<Ambiguous2, D> for T
where D: ResourceDialect,

§

unsafe fn encode( self, _encoder: &mut Encoder<'_, D>, _offset: usize, _depth: Depth, ) -> Result<(), Error>

Encodes the object into the encoder’s buffers. Any handles stored in the object are swapped for Handle::INVALID. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.