class FlushEndOfStreamAndCloseStream

Defined at line 1356 of file fidling/gen/sdk/fidl/fuchsia.media/fuchsia.media/cpp/fidl/fuchsia.media/cpp/markers.h

This message is optional; a client isn't required to send this ever.

Terminology note: In the name of this message, "flush" means flush

through, sometimes called "drain". This messge does not discard. To

discard, just QueueInputPacket with a new stream_lifetime_ordinal

without first waiting for OnOutputEndOfStream of the old stream and

without sending FlushEndOfStreamAndCloseStream.

There is currently no way to cancel the flush effect of this message

short of the client closing the StreamProcessor channel.

This message is only valid after QueueInputEndOfStream() for this

stream. The stream_lifetime_ordinal input parameter must match the

stream_lifetime_ordinal of the QueueInputEndOfStream(), else the server

will close the channel.

A client can use this message to flush through (drain, not discard) the

last input data of a stream so that the stream processor server

generates corresponding output data for all the input data before the

server moves on to the next stream, without forcing the client to wait

for OnOutputEndOfStream() before queueing data of another stream.

The difference between QueueInputEndOfStream() and

FlushEndOfStreamAndCloseStream(): QueueInputEndOfStream() is a promise

from the client that there will not be any more input data for the

stream (and this info is needed by some stream processors for the stream

processor to ever emit the very last output data). The

QueueInputEndOfStream() having been sent doesn't prevent the client from

later completely discarding the rest of the current stream by closing

the current stream (with or without a stream switch). In contrast,

FlushEndOfStreamAndCloseStream() is a request from the client that all

the previously-queued input data be processed including the logical

"EndOfStream" showing up as OnOutputEndOfStream() (in success case)

before moving on to any newer stream - this essentially changes the

close-stream handling from discard to flush-through for this stream

only.

A client using this message can start providing input data for a new

stream without that causing discard of old stream data. That's the

purpose of this message - to allow a client to flush through (not

discard) the old stream's last data (instead of the default when closing

or switching streams which is discard).

Because the old stream is not done processing yet and the old stream's

data is not being discarded, the client must be prepared to continue to

process OnOutputConstraints() messages until the stream_lifetime_ordinal

is done. The client will know the stream_lifetime_ordinal is done when

OnOutputEndOfStream(), OnStreamFailed(), or the StreamProcessor channel

closes.

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