class Duplicate
Defined at line 1588 of file fidling/gen/sdk/fidl/fuchsia.sysmem2/fuchsia.sysmem2/cpp/fidl/fuchsia.sysmem2/cpp/markers.h
Create an additional [`fuchsia.sysmem2/BufferCollectionToken`] from this
one, referring to the same buffer collection.
The created token is a child of this token in the
[`fuchsia.sysmem2/Node`] heirarchy.
This method can be used to add a participant, by transferring the newly
created token to another participant.
This one-way message can be used instead of the two-way
[`fuchsia.sysmem2/BufferCollectionToken.DuplicateSync`] FIDL call in
performance sensitive cases where it would be undesireable to wait for
sysmem to respond to
[`fuchsia.sysmem2/BufferCollectionToken.DuplicateSync`] or when the
client code isn't structured to make it easy to duplicate all the needed
tokens at once.
After sending one or more `Duplicate` messages, and before sending the
newly created child tokens to other participants (or to other
[`fuchsia.sysmem2/Allocator`] channels), the client must send a
[`fuchsia.sysmem2/Node.Sync`] and wait for the `Sync` response. The
`Sync` call can be made on the token, or on the `BufferCollection`
obtained by passing this token to `BindSharedCollection`. Either will
ensure that the server knows about the tokens created via `Duplicate`
before the other participant sends the token to the server via separate
`Allocator` channel.
All tokens must be turned in via
[`fuchsia.sysmem2/Allocator.BindSharedCollection`] or
[`fuchsia.sysmem2/Node.Release`] for a `BufferCollection` to
successfully allocate buffers.
All table fields are currently required.
+ request `rights_attenuation_mask` The rights bits that are zero in
this mask will be absent in the buffer VMO rights obtainable via the
client end of `token_request`. This allows an initiator or
intermediary participant to attenuate the rights available to a
delegate participant. This does not allow a participant to gain rights
that the participant doesn't already have. The value
`ZX_RIGHT_SAME_RIGHTS` can be used to specify that no attenuation
should be applied.
+ These values for rights_attenuation_mask result in no attenuation:
+ `ZX_RIGHT_SAME_RIGHTS` (preferred)
+ 0xFFFFFFFF (this is reasonable when an attenuation mask is
computed)
+ 0 (deprecated - do not use 0 - an ERROR will go to the log)
+ request `token_request` is the server end of a `BufferCollectionToken`
channel. The client end of this channel acts as another participant in
the shared buffer collection.
Public Members
static const bool kHasClientToServer
static const bool kHasClientToServerBody
static const bool kHasServerToClient
static const bool kHasServerToClientBody
static const bool kHasNonEmptyUserFacingResponse
static const bool kHasDomainError
static const bool kHasFrameworkError
static const uint64_t kOrdinal