pub struct BufferCollection;Expand description
The type corresponding to the BufferCollection protocol.
[fuchsia.sysmem2/BufferCollection] is a connection directly from a
participant to sysmem re. a buffer collection; often the buffer collection
is shared with other participants which have their own BufferCollection
client end(s) associated with the same buffer collection. In other words,
an instance of the BufferCollection interface is a view of a buffer
collection, not the buffer collection itself.
The BufferCollection connection exists to facilitate async indication of
when the buffer collection has been populated with buffers.
Also, the channel’s closure by the sysmem server is an indication to the
client that the client should close all VMO handles that were obtained from
the BufferCollection ASAP.
Some buffer collections can use enough memory that it can be worth avoiding
allocation overlap (in time) using
[fuchsia.sysmem2/BufferCollection.AttachLifetimeTracking] so that the
initiator can tell when enough buffers of the buffer collection have been
fully deallocated prior to the initiator allocating a new buffer collection.
Epitaphs are not used in this protocol.
Trait Implementations§
Source§impl Debug for BufferCollection
impl Debug for BufferCollection
Source§impl<___H, ___T> DispatchClientMessage<___H, ___T> for BufferCollectionwhere
___H: BufferCollectionClientHandler<___T> + Send,
___T: Transport,
impl<___H, ___T> DispatchClientMessage<___H, ___T> for BufferCollectionwhere
___H: BufferCollectionClientHandler<___T> + Send,
___T: Transport,
Source§impl<___H, ___T> DispatchLocalClientMessage<___H, ___T> for BufferCollectionwhere
___H: BufferCollectionLocalClientHandler<___T>,
___T: Transport,
impl<___H, ___T> DispatchLocalClientMessage<___H, ___T> for BufferCollectionwhere
___H: BufferCollectionLocalClientHandler<___T>,
___T: Transport,
Source§impl<___H, ___T> DispatchLocalServerMessage<___H, ___T> for BufferCollectionwhere
___H: BufferCollectionLocalServerHandler<___T>,
___T: Transport,
for<'de> NodeSetNameRequest<'de>: Decode<<<___T as Transport>::RecvBuffer as AsDecoder<'de>>::Decoder, Constraint = ()>,
for<'de> NodeSetDebugClientInfoRequest<'de>: Decode<<<___T as Transport>::RecvBuffer as AsDecoder<'de>>::Decoder, Constraint = ()>,
for<'de> NodeSetDebugTimeoutLogDeadlineRequest<'de>: Decode<<<___T as Transport>::RecvBuffer as AsDecoder<'de>>::Decoder, Constraint = ()>,
for<'de> NodeIsAlternateForRequest<'de>: Decode<<<___T as Transport>::RecvBuffer as AsDecoder<'de>>::Decoder, Constraint = ()>,
for<'de> NodeSetWeakOkRequest<'de>: Decode<<<___T as Transport>::RecvBuffer as AsDecoder<'de>>::Decoder, Constraint = ()>,
for<'de> NodeAttachNodeTrackingRequest<'de>: Decode<<<___T as Transport>::RecvBuffer as AsDecoder<'de>>::Decoder, Constraint = ()>,
for<'de> BufferCollectionSetConstraintsRequest<'de>: Decode<<<___T as Transport>::RecvBuffer as AsDecoder<'de>>::Decoder, Constraint = ()>,
for<'de> BufferCollectionAttachTokenRequest<'de>: Decode<<<___T as Transport>::RecvBuffer as AsDecoder<'de>>::Decoder, Constraint = ()>,
for<'de> BufferCollectionAttachLifetimeTrackingRequest<'de>: Decode<<<___T as Transport>::RecvBuffer as AsDecoder<'de>>::Decoder, Constraint = ()>,
impl<___H, ___T> DispatchLocalServerMessage<___H, ___T> for BufferCollectionwhere
___H: BufferCollectionLocalServerHandler<___T>,
___T: Transport,
for<'de> NodeSetNameRequest<'de>: Decode<<<___T as Transport>::RecvBuffer as AsDecoder<'de>>::Decoder, Constraint = ()>,
for<'de> NodeSetDebugClientInfoRequest<'de>: Decode<<<___T as Transport>::RecvBuffer as AsDecoder<'de>>::Decoder, Constraint = ()>,
for<'de> NodeSetDebugTimeoutLogDeadlineRequest<'de>: Decode<<<___T as Transport>::RecvBuffer as AsDecoder<'de>>::Decoder, Constraint = ()>,
for<'de> NodeIsAlternateForRequest<'de>: Decode<<<___T as Transport>::RecvBuffer as AsDecoder<'de>>::Decoder, Constraint = ()>,
for<'de> NodeSetWeakOkRequest<'de>: Decode<<<___T as Transport>::RecvBuffer as AsDecoder<'de>>::Decoder, Constraint = ()>,
for<'de> NodeAttachNodeTrackingRequest<'de>: Decode<<<___T as Transport>::RecvBuffer as AsDecoder<'de>>::Decoder, Constraint = ()>,
for<'de> BufferCollectionSetConstraintsRequest<'de>: Decode<<<___T as Transport>::RecvBuffer as AsDecoder<'de>>::Decoder, Constraint = ()>,
for<'de> BufferCollectionAttachTokenRequest<'de>: Decode<<<___T as Transport>::RecvBuffer as AsDecoder<'de>>::Decoder, Constraint = ()>,
for<'de> BufferCollectionAttachLifetimeTrackingRequest<'de>: Decode<<<___T as Transport>::RecvBuffer as AsDecoder<'de>>::Decoder, Constraint = ()>,
Source§impl<___H, ___T> DispatchServerMessage<___H, ___T> for BufferCollectionwhere
___H: BufferCollectionServerHandler<___T> + Send,
___T: Transport,
for<'de> NodeSetNameRequest<'de>: Decode<<<___T as Transport>::RecvBuffer as AsDecoder<'de>>::Decoder, Constraint = ()>,
for<'de> NodeSetDebugClientInfoRequest<'de>: Decode<<<___T as Transport>::RecvBuffer as AsDecoder<'de>>::Decoder, Constraint = ()>,
for<'de> NodeSetDebugTimeoutLogDeadlineRequest<'de>: Decode<<<___T as Transport>::RecvBuffer as AsDecoder<'de>>::Decoder, Constraint = ()>,
for<'de> NodeIsAlternateForRequest<'de>: Decode<<<___T as Transport>::RecvBuffer as AsDecoder<'de>>::Decoder, Constraint = ()>,
for<'de> NodeSetWeakOkRequest<'de>: Decode<<<___T as Transport>::RecvBuffer as AsDecoder<'de>>::Decoder, Constraint = ()>,
for<'de> NodeAttachNodeTrackingRequest<'de>: Decode<<<___T as Transport>::RecvBuffer as AsDecoder<'de>>::Decoder, Constraint = ()>,
for<'de> BufferCollectionSetConstraintsRequest<'de>: Decode<<<___T as Transport>::RecvBuffer as AsDecoder<'de>>::Decoder, Constraint = ()>,
for<'de> BufferCollectionAttachTokenRequest<'de>: Decode<<<___T as Transport>::RecvBuffer as AsDecoder<'de>>::Decoder, Constraint = ()>,
for<'de> BufferCollectionAttachLifetimeTrackingRequest<'de>: Decode<<<___T as Transport>::RecvBuffer as AsDecoder<'de>>::Decoder, Constraint = ()>,
impl<___H, ___T> DispatchServerMessage<___H, ___T> for BufferCollectionwhere
___H: BufferCollectionServerHandler<___T> + Send,
___T: Transport,
for<'de> NodeSetNameRequest<'de>: Decode<<<___T as Transport>::RecvBuffer as AsDecoder<'de>>::Decoder, Constraint = ()>,
for<'de> NodeSetDebugClientInfoRequest<'de>: Decode<<<___T as Transport>::RecvBuffer as AsDecoder<'de>>::Decoder, Constraint = ()>,
for<'de> NodeSetDebugTimeoutLogDeadlineRequest<'de>: Decode<<<___T as Transport>::RecvBuffer as AsDecoder<'de>>::Decoder, Constraint = ()>,
for<'de> NodeIsAlternateForRequest<'de>: Decode<<<___T as Transport>::RecvBuffer as AsDecoder<'de>>::Decoder, Constraint = ()>,
for<'de> NodeSetWeakOkRequest<'de>: Decode<<<___T as Transport>::RecvBuffer as AsDecoder<'de>>::Decoder, Constraint = ()>,
for<'de> NodeAttachNodeTrackingRequest<'de>: Decode<<<___T as Transport>::RecvBuffer as AsDecoder<'de>>::Decoder, Constraint = ()>,
for<'de> BufferCollectionSetConstraintsRequest<'de>: Decode<<<___T as Transport>::RecvBuffer as AsDecoder<'de>>::Decoder, Constraint = ()>,
for<'de> BufferCollectionAttachTokenRequest<'de>: Decode<<<___T as Transport>::RecvBuffer as AsDecoder<'de>>::Decoder, Constraint = ()>,
for<'de> BufferCollectionAttachLifetimeTrackingRequest<'de>: Decode<<<___T as Transport>::RecvBuffer as AsDecoder<'de>>::Decoder, Constraint = ()>,
Source§impl<___T> HasConnectionHandles<___T> for BufferCollectionwhere
___T: Transport,
impl<___T> HasConnectionHandles<___T> for BufferCollectionwhere
___T: Transport,
Source§impl HasTransport for BufferCollection
Available on Fuchsia only.
impl HasTransport for BufferCollection
Source§impl PartialEq for BufferCollection
impl PartialEq for BufferCollection
Source§fn eq(&self, other: &BufferCollection) -> bool
fn eq(&self, other: &BufferCollection) -> bool
self and other values to be equal, and is used by ==.impl StructuralPartialEq for BufferCollection
Auto Trait Implementations§
impl Freeze for BufferCollection
impl RefUnwindSafe for BufferCollection
impl Send for BufferCollection
impl Sync for BufferCollection
impl Unpin for BufferCollection
impl UnsafeUnpin for BufferCollection
impl UnwindSafe for BufferCollection
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> InstanceFromServiceTransport<T> for T
impl<T> InstanceFromServiceTransport<T> for T
§fn from_service_transport(handle: T) -> T
fn from_service_transport(handle: T) -> T
T to [Self]