template <>

class WireWeakOnewayClientImpl

Defined at line 19262 of file fidling/gen/sdk/fidl/fuchsia.sysmem2/fuchsia.sysmem2/cpp/fidl/fuchsia.sysmem2/cpp/wire_messaging.h

Public Methods

::fidl::OneWayStatus AllocateNonSharedCollection (::fuchsia_sysmem2::wire::AllocatorAllocateNonSharedCollectionRequest AllocatorAllocateNonSharedCollectionRequest)

Allocates a buffer collection on behalf of a single client (aka

initiator) who is also the only participant (from the point of view of

sysmem).

This call exists mainly for temp/testing purposes. This call skips the

[`fuchsia.sysmem2/BufferCollectionToken`] stage, so there's no way to

allow another participant to specify its constraints.

Real clients are encouraged to use

[`fuchsia.sysmem2/Allocator.AllocateSharedCollection`] instead, and to

let relevant participants directly convey their own constraints to

sysmem by sending `BufferCollectionToken`s to those participants.

+ request `collection_request` The server end of the

[`fuchsia.sysmem2/BufferCollection`].

Allocates 56 bytes of message buffer on the stack. No heap allocation necessary.

::fidl::OneWayStatus AllocateSharedCollection (::fuchsia_sysmem2::wire::AllocatorAllocateSharedCollectionRequest AllocatorAllocateSharedCollectionRequest)

Creates a root [`fuchsia.sysmem2/BufferCollectionToken`].

The `BufferCollectionToken` can be "duplicated" for distribution to

participants by using

[`fuchsia.sysmem2/BufferCollectionToken.Duplicate`]. Each

`BufferCollectionToken` can be converted into a

[`fuchsia.sysmem2.BufferCollection`] using

[`fuchsia.sysmem2/Allocator.BindSharedCollection`].

Buffer constraints can be set via

[`fuchsia.sysmem2/BufferCollection.SetConstraints`].

Success/failure to populate the buffer collection with buffers can be

determined from

[`fuchsia.sysmem2/BufferCollection.WaitForAllBuffersAllocated`].

Closing the client end of a `BufferCollectionToken` or

`BufferCollection` (without `Release` first) will fail all client ends

in the same failure domain, which by default is all client ends of the

buffer collection. See

[`fuchsia.sysmem2/BufferCollection.SetDispensable`] and

[`fuchsia.sysmem2/BufferCollection.AttachToken`] for ways to create

separate failure domains within a buffer collection.

Allocates 56 bytes of message buffer on the stack. No heap allocation necessary.

::fidl::OneWayStatus BindSharedCollection (::fuchsia_sysmem2::wire::AllocatorBindSharedCollectionRequest AllocatorBindSharedCollectionRequest)

Convert a [`fuchsia.sysmem2/BufferCollectionToken`] into a

[`fuchsia.sysmem2/BufferCollection`].

At the time of sending this message, the buffer collection hasn't yet

been populated with buffers - the participant must first also send

[`fuchsia.sysmem2/BufferCollection.SetConstraints`] via the

`BufferCollection` client end.

All `BufferCollectionToken`(s) duplicated from a root

`BufferCollectionToken` (created via `AllocateSharedCollection`) must be

"turned in" via `BindSharedCollection` (or `Release`ed), and all

existing `BufferCollection` client ends must have sent `SetConstraints`

before the logical BufferCollection will be populated with buffers (or

will fail if the overall set of constraints can't be satisfied).

+ request `token` The client endpoint of a channel whose server end was

sent to sysmem using

[`fuchsia.sysmem2/Allocator.AllocateSharedCollection`] or whose server

end was sent to sysmem using

[`fuchsia.sysmem2/BufferCollectionToken.Duplicate`]. The token is

being "turned in" in exchange for a

[`fuchsia.sysmem2/BufferCollection`].

+ request `buffer_collection_request` The server end of a

[`fuchsia.sysmem2/BufferCollection`] channel. The sender retains the

client end. The `BufferCollection` channel is a single participant's

connection to the logical buffer collection. Typically there will be

other participants with their own `BufferCollection` channel to the

logical buffer collection.

Allocates 64 bytes of message buffer on the stack. No heap allocation necessary.

::fidl::OneWayStatus SetDebugClientInfo (::fuchsia_sysmem2::wire::AllocatorSetDebugClientInfoRequest AllocatorSetDebugClientInfoRequest)

Set information about the current client that can be used by sysmem to

help diagnose leaking memory and allocation stalls waiting for a

participant to send [`fuchsia.sysmem2/BufferCollection.SetConstraints`].

This sets the debug client info on all [`fuchsia.sysmem2/Node`](s)

subsequently created by this this [`fuchsia.sysmem2/Allocator`]

including any [`fuchsia.sysmem2/BufferCollection`](s) created via

[`fuchsia.sysmem2/Allocator.BindSharedCollection`] (in the absence of

any prior call to [`fuchsia.sysmem2/Allocator.SetDebugClientInfo`],

these `BufferCollection`(s) have the same initial debug client info as

the token turned in to create the `BufferCollection`).

This info can be subsequently overridden on a per-`Node` basis by

sending [`fuchsia.sysmem2/Node.SetDebugClientInfo`].

Sending [`fuchsia.sysmem2/Allocator.SetDebugClientInfo`] once per

`Allocator` is the most efficient way to ensure that all

[`fuchsia.sysmem2/Node`](s) will have at least some debug client info

set, and is also more efficient than separately sending the same debug

client info via [`fuchsia.sysmem2/Node.SetDebugClientInfo`] for each

created [`fuchsia.sysmem2/Node`].

+ request `name` This can be an arbitrary string, but the current

process name (see `fsl::GetCurrentProcessName`) is a good default.

+ request `id` This can be an arbitrary id, but the current process ID

(see `fsl::GetCurrentProcessKoid`) is a good default.

Allocates 344 bytes of message buffer on the stack. No heap allocation necessary.