A stream that can both produce and consume buffers. More...
#include <AsyncStreams.h>
Public Member Functions | |
| Result | init (AsyncBuffersPool &buffersPool, Span< AsyncReadableStream::Request > readableRequests, Span< AsyncWritableStream::Request > writableRequests) |
Public Member Functions inherited from SC::AsyncReadableStream | |
| Result | init (AsyncBuffersPool &buffersPool, Span< Request > requests) |
| Emitted when the underlying resource has been closed. | |
| Result | start () |
| Starts the readable stream, that will emit eventData. | |
| void | pause () |
| Pauses the readable stream (that can be later resumed) | |
| void | resumeReading () |
| Resumes the readable stream paused by AsyncReadableStream::pause. | |
| void | destroy () |
| Forcefully destroys the readable stream before it's end event releasing all resources. | |
| bool | isEnded () const |
| Returns true if the stream is ended (AsyncReadableStream::end has been called) | |
| AsyncBuffersPool & | getBuffersPool () |
| Obtains the AsyncBuffersPool to request more buffers. | |
| void | push (AsyncBufferView::ID bufferID, size_t newSize) |
| Use push from inside AsyncReadableStream::asyncRead function to queue received data. | |
| void | pushEnd () |
| Use pushEnd from inside AsyncReadableStream::asyncRead to signal production end. | |
| void | reactivate (bool doReactivate) |
| Use reactivate(true) from inside AsyncReadableStream::asyncRead function to ask the state machine to invoke asyncRead again. | |
| void | emitError (Result error) |
| Signals an async error received. | |
| bool | getBufferOrPause (size_t minumumSizeInBytes, AsyncBufferView::ID &bufferID, Span< char > &data) |
| Returns an unused buffer from pool or pauses the stream if none is available. | |
Public Member Functions inherited from SC::AsyncWritableStream | |
| Result | init (AsyncBuffersPool &buffersPool, Span< Request > requests) |
| Emitted when no more data can be written. | |
| Result | write (AsyncBufferView::ID bufferID, Function< void(AsyncBufferView::ID)> cb={}) |
| Writes a buffer (that must be allocated by the AsyncBuffersPool passed in AsyncWritableStream) When the buffer it will be actually written, AsyncWritableStream::eventWritten will be raised and its reference count will be decreased. | |
| Result | write (Span< const char > data, Function< void(AsyncBufferView::ID)> cb={}) |
| Try requesting a buffer big enough and copy data into it. | |
| template<size_t N> | |
| Result | write (const char(&str)[N]) |
| Write a C-string literal in the stream. | |
| void | end () |
| Ends the writable stream, waiting for all in-flight and queued writes to finish. | |
| AsyncBuffersPool & | getBuffersPool () |
| Obtains the buffers pool to access its data. | |
| void | finishedWriting (AsyncBufferView::ID bufferID, Function< void(AsyncBufferView::ID)> &&cb, Result res) |
| Signals that the given buffer (previously queued by write) has been fully written. | |
| void | resumeWriting () |
| Resumes writing queued requests for this stream. | |
| Result | unshift (AsyncBufferView::ID bufferID, Function< void(AsyncBufferView::ID)> &&cb) |
| Puts back a buffer at the top of the write queue. | |
| void | emitError (Result error) |
| Signals an async error received. | |
| void | tryAsync (Result potentialError) |
| Will emit error if the passed in Result is false. | |
| void | stop () |
Additional Inherited Members | |
Public Attributes inherited from SC::AsyncReadableStream | |
| Function< Result()> | asyncRead |
| Function that every stream must define to implement its custom read operation. | |
| Event< MaxListeners, Result > | eventError |
| Event< MaxListeners, AsyncBufferView::ID > | eventData |
| Emitted when an error occurs. | |
| Event< MaxListeners > | eventEnd |
| Emitted when a new buffer has been read. | |
| Event< MaxListeners > | eventClose |
| Emitted when there is no more data. | |
Public Attributes inherited from SC::AsyncWritableStream | |
| Function< Result(AsyncBufferView::ID, Function< void(AsyncBufferView::ID)>)> | asyncWrite |
| Function that every stream must define to implement its custom write operation. | |
| Event< MaxListeners, Result > | eventError |
| Event< MaxListeners > | eventDrain |
| Emitted when an error occurs. | |
| Event< MaxListeners > | eventFinish |
| Emitted when write queue is empty. | |
| Function< bool()> | canEndWritable |
| Allows keeping a writable in ENDING state until it has finished flushing all pending data. | |
Static Public Attributes inherited from SC::AsyncReadableStream | |
| static constexpr int | MaxListeners = 8 |
Static Public Attributes inherited from SC::AsyncWritableStream | |
| static constexpr int | MaxListeners = 8 |
A stream that can both produce and consume buffers.