class Duplicate
Defined at line 1019 of file fidling/gen/sdk/fidl/fuchsia.sysmem/fuchsia.sysmem/cpp/fidl/fuchsia.sysmem/cpp/markers.h
This method can be used to add a participant prior to creating a shared
BufferCollection. It should only be used instead of DuplicateSync in
performance sensitive cases where it would be undesireable to wait for
sysmem to respond as part of each duplicate.
After sending one or more Duplicate() messages, and before sending the
created tokens to other participants (or to other Allocator channels),
the client should send a Sync() and wait for its 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 BindSharedCollection() or Close() for a
BufferCollection to be successfully created.
When a client calls BindSharedCollection() to turn in a
BufferCollectionToken, the server will process all Duplicate() messages
before closing down the BufferCollectionToken. This allows the client
to Duplicate() and immediately turn in the BufferCollectionToken using
BindSharedCollection, then later transfer the client end of token_request
to another participant - the server will notice the existence of the
token_request before considering this BufferCollectionToken fully closed.
`rights_attenuation_mask` 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 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)
`token_request` is the server end of a BufferCollectionToken channel.
The client end of this channel acts as another participant in creating the
shared BufferCollection.
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