Waits for end of stream
int32 DSWaitEndOfStream (Item msgItem, DSRequestMsgPtr reqMsg, DSStreamCBPtr streamCBPtr)
Waits for the DataStreamer to reach the end of the stream. The DataStreamer checks each chunk of stream data for an end of stream marker. When one is detected, the DataStreamer issues an end of stream message to all threads that have requested one. DSWaitEndOfStream()
requests an end of stream message from the DataStreamer.
DSWaitEndOfStream()
also needs to be called after an EOS message has been received if the application wishes to receive further notification. The EOS message gets replied to when DSStopStream()
is called, so DSWaitEndOfStream()
should be called before DSStartStream()
The value of reqMsg
determines whether or not DSWaitEndOfStream()
returns immediately or waits for the end of stream message. If reqMsg
specifies a request message, DSWaitEndOfStream()
requests an asynchronous notification that the DataStreamer has reached the end of the stream. If reqMsg
is NULL
, however, DSWaitEndOfStream()
will not return until the DataStreamer has reached the end of the stream.
msgItem
Item of the request messagereqMsg
Pointer to the DSRequestMsg
message that is formatted and sent to the DataStreamer. A value of NULL
forces creation of an internal DSRequestMsg
message and synchronous operation.streamCBPtr
Pointer to the stream context block
The members of reqMsg
are set to the following values:
whatToDo
kDSOpWaitEndOfStream
These values are returned if the DataStreamer encounters an error while processing the message request:
kDSInvalidDSRequest
Invalid message (whatToDo set to invalid value)kDSNoReplyPortErr
Could not locate item of the reply portSendMsg()
or WaitPort()
failed
The DataStreamer checks the validity of messages only if message checking is enabled when the DataStreamer is compiled (if the VALIDATE_REQUEST_CODE
symbol is enabled).
See “Error Messages” in the 3DO Portfolio Reference Manual for a listing of error messages returned by SendMsg()
and WaitPort()
.
DataStreamLib.h