State for the stream-reading thread. More...
#include <stream_channel.h>
Public Member Functions | |
StreamChannelReadState (const StreamChannelReadState &)=delete | |
StreamChannelReadState & | operator= (const StreamChannelReadState &)=delete |
StreamChannelReadState (StreamChannelReadState &&)=delete | |
StreamChannelReadState & | operator= (StreamChannelReadState &&)=delete |
bool | HasBufferToFill () |
void | ProvideBufferToFill (multibuf::MultiBuf &&buf) |
Provide a buffer for ReadLoop to read data into. | |
async2::Poll< Result< multibuf::MultiBuf > > | PendFilledBuffer (async2::Context &cx) |
void | ReadLoop (stream::Reader &reader) |
State for the stream-reading thread.
bool pw::channel::internal::StreamChannelReadState::HasBufferToFill | ( | ) |
Whether or not the ReadLoop
already has a buffer available into which data can be read.
async2::Poll< Result< multibuf::MultiBuf > > pw::channel::internal::StreamChannelReadState::PendFilledBuffer | ( | async2::Context & | cx | ) |
Receives any available data processed by ReadLoop
.
If no data is available, schedules a wakeup of the task in cx
when new data arrives.
void pw::channel::internal::StreamChannelReadState::ReadLoop | ( | stream::Reader & | reader | ) |
A loop which reads data from reader
into buffers provided by ProvideBufferToFill
and then makes them available via PendFilledBuffer
.
This is blocking and is intended to be run on an independent thread.