class Close
Defined at line 322 of file fidling/gen/sdk/fidl/fuchsia.sysmem/fuchsia.sysmem/cpp/fidl/fuchsia.sysmem/cpp/markers.h
On a BufferCollectionToken channel:
Normally a participant will convert a BufferCollectionToken into a
BufferCollection view, but a participant is also free to Close() the
token (and then close the channel immediately or shortly later in
response to server closing its end), which avoids causing logical buffer
collection failure. Normally an unexpected token channel close will
cause logical buffer collection failure (the only exceptions being
certain cases involving AttachToken() or SetDispensable()).
On a BufferCollection channel:
By default the server handles unexpected failure of a BufferCollection
by failing the whole logical buffer collection. Partly this is to
expedite closing VMO handles to reclaim memory when any participant
fails. If a participant would like to cleanly close a BufferCollection
view without causing logical buffer collection failure, the participant
can send Close() before closing the client end of the BufferCollection
channel. If this is the last BufferCollection view, the logical buffer
collection will still go away. The Close() can occur before or after
SetConstraints(). If before SetConstraints(), the buffer collection
won't require constraints from this node in order to allocate. If
after SetConstraints(), the constraints are retained and aggregated
along with any subsequent logical allocation(s), despite the lack of
channel connection.
On a BufferCollectionTokenGroup channel:
By default, unexpected failure of a BufferCollectionTokenGroup will
trigger failure of the logical BufferCollectionTokenGroup and will
propagate failure to its parent. To close a BufferCollectionTokenGroup
channel without failing the logical group or propagating failure, send
Close() before closing the channel client endpoint.
If Close() occurs before AllChildrenPresent(), the logical buffer
collection will still fail despite the Close() (because sysmem can't be
sure whether all relevant children were created, so it's ambiguous
whether all relevant constraints will be provided to sysmem). If
Close() occurs after AllChildrenPresent(), the children and all their
constraints remain intact (just as they would if the
BufferCollectionTokenGroup channel had remained open), and the close
doesn't trigger or propagate failure.
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