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