Skip to main content

BufferCollection

Struct BufferCollection 

Source
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

Source§

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

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

impl<___H, ___T> DispatchClientMessage<___H, ___T> for BufferCollection
where ___H: BufferCollectionClientHandler<___T> + Send, ___T: Transport,

Source§

async fn on_event( handler: &mut ___H, ordinal: u64, flexibility: Flexibility, body: Body<___T>, ) -> Result<(), ProtocolError<___T::Error>>

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

impl<___H, ___T> DispatchLocalClientMessage<___H, ___T> for BufferCollection
where ___H: BufferCollectionLocalClientHandler<___T>, ___T: Transport,

Source§

async fn on_event( handler: &mut ___H, ordinal: u64, flexibility: Flexibility, body: Body<___T>, ) -> Result<(), ProtocolError<___T::Error>>

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

impl<___H, ___T> DispatchLocalServerMessage<___H, ___T> for BufferCollection
where ___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§

async fn on_one_way( handler: &mut ___H, ordinal: u64, flexibility: Flexibility, body: Body<___T>, ) -> Result<(), ProtocolError<<___T as Transport>::Error>>

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

async fn on_two_way( handler: &mut ___H, ordinal: u64, flexibility: Flexibility, body: Body<___T>, responder: Responder<___T>, ) -> Result<(), ProtocolError<<___T as Transport>::Error>>

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

impl<___H, ___T> DispatchServerMessage<___H, ___T> for BufferCollection
where ___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§

async fn on_one_way( handler: &mut ___H, ordinal: u64, flexibility: Flexibility, body: Body<___T>, ) -> Result<(), ProtocolError<<___T as Transport>::Error>>

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

async fn on_two_way( handler: &mut ___H, ordinal: u64, flexibility: Flexibility, body: Body<___T>, responder: Responder<___T>, ) -> Result<(), ProtocolError<<___T as Transport>::Error>>

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

impl<___T> HasConnectionHandles<___T> for BufferCollection
where ___T: Transport,

Source§

type Client = BufferCollectionClient<___T>

The client for the protocol. It must be a #[repr(transparent)] wrapper around Client<T>.
Source§

type Server = BufferCollectionServer<___T>

The server for the protocol. It must be a #[repr(transparent)] wrapper around Server<T>.
Source§

impl HasTransport for BufferCollection

Available on Fuchsia only.
Source§

type Transport = Channel

The default transport type for this protocol.
Source§

impl PartialEq for BufferCollection

Source§

fn eq(&self, other: &BufferCollection) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl StructuralPartialEq for BufferCollection

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
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> InstanceFromServiceTransport<T> for T

§

fn from_service_transport(handle: T) -> T

Converts the given service transport handle of type T to [Self]
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.
§

impl<E> RunsTransport<Mpsc> for E

§

impl<E> RunsTransport<Mpsc> for E
where E: RunsTransport<Mpsc>,