C/C++ API Reference
Loading...
Searching...
No Matches
pw_channel

Overview

Async, zero-copy API for sending and receiving bytes or datagrams.

Main docs: Home

Submodules

 Forwarding
 
 Loopback
 
 RP2 stdio
 
 Stream channel
 

Classes

class  pw::channel::Channel< kDataType, kProperties >
 
class  pw::channel::AnyChannel
 
class  pw::channel::ChannelImpl< kDataType, kProperties >
 
class  pw::channel::Implement< ChannelType >
 
class  pw::channel::internal::ForwardingChannel< kType >
 
class  pw::channel::internal::ForwardingChannel< DataType::kDatagram >
 
class  pw::channel::internal::ForwardingChannel< DataType::kByte >
 
class  pw::channel::LoopbackChannel< DataType::kDatagram >
 
class  pw::channel::LoopbackChannel< DataType::kByte >
 
class  pw::channel::internal::StreamChannelReadState
 State for the stream-reading thread. More...
 
class  pw::channel::internal::StreamChannelWriteState
 State for the stream-writing thread. More...
 

Typedefs

template<Property... kProperties>
using pw::channel::ByteChannel = Channel< DataType::kByte, kProperties... >
 A ByteChannel exchanges data as a stream of bytes.
 
template<Property... kProperties>
using pw::channel::DatagramChannel = Channel< DataType::kDatagram, kProperties... >
 A DatagramChannel exchanges data as a series of datagrams.
 
using pw::channel::ByteReader = ByteChannel< kReadable >
 Unreliable byte-oriented Channel that supports reading.
 
using pw::channel::ByteWriter = ByteChannel< kWritable >
 Unreliable byte-oriented Channel that supports writing.
 
using pw::channel::ByteReaderWriter = ByteChannel< kReadable, kWritable >
 Unreliable byte-oriented Channel that supports reading and writing.
 
using pw::channel::ReliableByteReader = ByteChannel< kReliable, kReadable >
 Reliable byte-oriented Channel that supports reading.
 
using pw::channel::ReliableByteWriter = ByteChannel< kReliable, kWritable >
 Reliable byte-oriented Channel that supports writing.
 
using pw::channel::ReliableByteReaderWriter = ByteChannel< kReliable, kReadable, kWritable >
 Reliable byte-oriented Channel that supports reading and writing.
 
using pw::channel::DatagramReader = DatagramChannel< kReadable >
 Unreliable datagram-oriented Channel that supports reading.
 
using pw::channel::DatagramWriter = DatagramChannel< kWritable >
 Unreliable datagram-oriented Channel that supports writing.
 
using pw::channel::DatagramReaderWriter = DatagramChannel< kReadable, kWritable >
 Unreliable datagram-oriented Channel that supports reading and writing.
 
using pw::channel::ReliableDatagramReader = DatagramChannel< kReliable, kReadable >
 Reliable datagram-oriented Channel that supports reading.
 
using pw::channel::ReliableDatagramWriter = DatagramChannel< kReliable, kWritable >
 Reliable datagram-oriented Channel that supports writing.
 
using pw::channel::ReliableDatagramReaderWriter = DatagramChannel< kReliable, kReadable, kWritable >
 Reliable datagram-oriented Channel that supports reading and writing.
 
template<Property... kProperties>
using pw::channel::ByteChannelImpl = ChannelImpl< DataType::kByte, kProperties... >
 Implement a byte-oriented Channel with the specified properties.
 
template<Property... kProperties>
using pw::channel::DatagramChannelImpl = ChannelImpl< DataType::kDatagram, kProperties... >
 Implement a datagram-oriented Channel with the specified properties.
 

Functions

constexpr pw::channel::ForwardingChannelPair< kType >::ForwardingChannelPair (multibuf::MultiBufAllocator &first_write_alloc, multibuf::MultiBufAllocator &second_write_alloc)
 
 pw::channel::ForwardingChannelPair< kType >::ForwardingChannelPair (const ForwardingChannelPair &)=delete
 
ForwardingChannelPairpw::channel::ForwardingChannelPair< kType >::operator= (const ForwardingChannelPair &)=delete
 
 pw::channel::ForwardingChannelPair< kType >::ForwardingChannelPair (ForwardingChannelPair &&)=delete
 
ForwardingChannelPairpw::channel::ForwardingChannelPair< kType >::operator= (ForwardingChannelPair &&)=delete
 
Channel< kType, kReliable, kReadable, kWritable > & pw::channel::ForwardingChannelPair< kType >::first ()
 Returns the first channel in the pair.
 
const Channel< kType, kReliable, kReadable, kWritable > & pw::channel::ForwardingChannelPair< kType >::first () const
 Returns a const reference to the first channel in the pair.
 
Channel< kType, kReliable, kReadable, kWritable > & pw::channel::ForwardingChannelPair< kType >::second ()
 Returns the second channel in the pair.
 
const Channel< kType, kReliable, kReadable, kWritable > & pw::channel::ForwardingChannelPair< kType >::second () const
 Returns a const reference to the second channel in the pair.
 
 pw::channel::internal::ForwardingChannel< DataType::kDatagram >::ForwardingChannel (const ForwardingChannel &)=delete
 
ForwardingChannelpw::channel::internal::ForwardingChannel< DataType::kDatagram >::operator= (const ForwardingChannel &)=delete
 
 pw::channel::internal::ForwardingChannel< DataType::kDatagram >::ForwardingChannel (ForwardingChannel &&)=delete
 
ForwardingChannelpw::channel::internal::ForwardingChannel< DataType::kDatagram >::operator= (ForwardingChannel &&)=delete
 
 pw::channel::internal::ForwardingChannel< DataType::kByte >::ForwardingChannel (const ForwardingChannel &)=delete
 
ForwardingChannelpw::channel::internal::ForwardingChannel< DataType::kByte >::operator= (const ForwardingChannel &)=delete
 
 pw::channel::internal::ForwardingChannel< DataType::kByte >::ForwardingChannel (ForwardingChannel &&)=delete
 
ForwardingChannelpw::channel::internal::ForwardingChannel< DataType::kByte >::operator= (ForwardingChannel &&)=delete
 
 pw::channel::LoopbackChannel< DataType::kDatagram >::LoopbackChannel (multibuf::MultiBufAllocator &write_allocator)
 
 pw::channel::LoopbackChannel< DataType::kDatagram >::LoopbackChannel (const LoopbackChannel &)=delete
 
LoopbackChannelpw::channel::LoopbackChannel< DataType::kDatagram >::operator= (const LoopbackChannel &)=delete
 
 pw::channel::LoopbackChannel< DataType::kDatagram >::LoopbackChannel (LoopbackChannel &&)=default
 
LoopbackChannelpw::channel::LoopbackChannel< DataType::kDatagram >::operator= (LoopbackChannel &&)=default
 
 pw::channel::LoopbackChannel< DataType::kByte >::LoopbackChannel (multibuf::MultiBufAllocator &write_allocator)
 
 pw::channel::LoopbackChannel< DataType::kByte >::LoopbackChannel (const LoopbackChannel &)=delete
 
LoopbackChannelpw::channel::LoopbackChannel< DataType::kByte >::operator= (const LoopbackChannel &)=delete
 
 pw::channel::LoopbackChannel< DataType::kByte >::LoopbackChannel (LoopbackChannel &&)=default
 
LoopbackChannelpw::channel::LoopbackChannel< DataType::kByte >::operator= (LoopbackChannel &&)=default
 
 pw::channel::internal::StreamChannelReadState::StreamChannelReadState (const StreamChannelReadState &)=delete
 
StreamChannelReadStatepw::channel::internal::StreamChannelReadState::operator= (const StreamChannelReadState &)=delete
 
 pw::channel::internal::StreamChannelReadState::StreamChannelReadState (StreamChannelReadState &&)=delete
 
StreamChannelReadStatepw::channel::internal::StreamChannelReadState::operator= (StreamChannelReadState &&)=delete
 
bool pw::channel::internal::StreamChannelReadState::HasBufferToFill ()
 
void pw::channel::internal::StreamChannelReadState::ProvideBufferToFill (multibuf::MultiBuf &&buf)
 Provide a buffer for ReadLoop to read data into.
 
async2::PollResult< multibuf::MultiBuf > pw::channel::internal::StreamChannelReadState::PendFilledBuffer (async2::Context &cx)
 
void pw::channel::internal::StreamChannelReadState::ReadLoop (stream::Reader &reader)
 
 pw::channel::internal::StreamChannelWriteState::StreamChannelWriteState (const StreamChannelWriteState &)=delete
 
StreamChannelWriteStatepw::channel::internal::StreamChannelWriteState::operator= (const StreamChannelWriteState &)=delete
 
 pw::channel::internal::StreamChannelWriteState::StreamChannelWriteState (StreamChannelWriteState &&)=delete
 
StreamChannelWriteStatepw::channel::internal::StreamChannelWriteState::operator= (StreamChannelWriteState &&)=delete
 
Status pw::channel::internal::StreamChannelWriteState::SendData (multibuf::MultiBuf &&buf)
 
void pw::channel::internal::StreamChannelWriteState::WriteLoop (stream::Writer &writer)
 
 pw::channel::StreamChannel::StreamChannel (stream::Reader &reader, const thread::Options &read_thread_options, multibuf::MultiBufAllocator &read_allocator, stream::Writer &writer, const thread::Options &write_thread_option, multibuf::MultiBufAllocator &write_allocator)
 
 pw::channel::StreamChannel::StreamChannel (multibuf::MultiBufAllocator &allocator, stream::Reader &reader, const thread::Options &read_thread_options, stream::Writer &writer, const thread::Options &write_thread_options)
 
 pw::channel::StreamChannel::StreamChannel (const StreamChannel &)=delete
 
StreamChannelpw::channel::StreamChannel::operator= (const StreamChannel &)=delete
 
 pw::channel::StreamChannel::StreamChannel (StreamChannel &&)=delete
 
StreamChannelpw::channel::StreamChannel::operator= (StreamChannel &&)=delete
 

Friends

template<DataType >
class pw::channel::ForwardingChannelPair< kType >::internal::ForwardingChannel
 
class pw::channel::internal::ForwardingChannel< DataType::kDatagram >::ForwardingChannelPair< DataType::kDatagram >
 
class pw::channel::internal::ForwardingChannel< DataType::kByte >::ForwardingChannelPair< DataType::kByte >
 
class pw::NoDestructor< StreamChannel >
 

Function Documentation

◆ HasBufferToFill()

bool pw::channel::internal::StreamChannelReadState::HasBufferToFill ( )

Whether or not the ReadLoop already has a buffer available into which data can be read.

◆ PendFilledBuffer()

async2::PollResult< 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.

◆ ReadLoop()

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.

◆ SendData()

Status pw::channel::internal::StreamChannelWriteState::SendData ( multibuf::MultiBuf &&  buf)

Queues buf to be sent into writer via the WriteLoop.

Returns a status indicating whether the WriteLoop has encountered errors writing into writer.

◆ WriteLoop()

void pw::channel::internal::StreamChannelWriteState::WriteLoop ( stream::Writer writer)

A loop which writes the data sent via SendData into writer.

This is blocking and is intended to be run on an independent thread.