|
A11 (C++ runtime)
Native C++ implementation of the A11 action and streaming runtime
|
Shared WireStream lifecycle and framing for binary channels. More...
#include <cpp/a11/net/channel_wire_stream.h>
Classes | |
| struct | State |
Public Types | |
| using | OpenOperation = std::function< absl::Status()> |
| Transport-specific operation that initiates or accepts the channel. | |
Public Member Functions | |
| ~ChannelWireStream () override | |
| absl::Status | Send (data::WireMessage message) override |
| Enqueue a message for delivery to the peer. | |
| a11::Task | Start (OnMessage on_message, OnDone on_done) override |
| Begin the stream as the initiating ("start") side. | |
| a11::Task | Accept (OnMessage on_message, OnDone on_done) override |
| Begin the stream as the accepting ("accept") side. | |
| absl::Status | HalfClose (data::ByteMap trailers) override |
| Signal that this side will send no more messages. | |
| a11::Task | DrainOutgoingMessages () override |
| Await delivery of all buffered outbound messages. | |
| absl::Status | Abort (absl::Status status) override |
| Abort the stream, discarding buffered work. | |
| absl::Status | SetDeadline (absl::Time deadline) override |
| Set the absolute deadline after which the stream is aborted. | |
| absl::Time | deadline () const override |
| absl::Status | GetStatus () const override |
| std::optional< data::ByteMap > | GetTrailers () const override |
| std::string | GetId () const override |
| void *absl_nullable | GetImpl () const override |
| absl::Status | HalfClose () |
| Half-close with no trailers. | |
| virtual absl::Status | HalfClose (data::ByteMap trailers)=0 |
| Signal that this side will send no more messages. | |
| absl::Status | SetDeadline () |
| Clear any deadline (equivalent to an infinite deadline). | |
| virtual absl::Status | SetDeadline (absl::Time deadline)=0 |
| Set the absolute deadline after which the stream is aborted. | |
Public Member Functions inherited from a11::net::WireStream | |
| virtual | ~WireStream ()=default |
| absl::Status | HalfClose () |
| Half-close with no trailers. | |
| absl::Status | SetDeadline () |
| Clear any deadline (equivalent to an infinite deadline). | |
Protected Member Functions | |
| ChannelWireStream (std::shared_ptr< State > state) | |
Static Protected Member Functions | |
| static absl::StatusOr< std::shared_ptr< State > > | MakeState (std::shared_ptr< internal::BinaryChannel > channel, std::string id, ChannelEndpointRole role, OpenOperation open_operation, WireStreamOptions options, ChannelFramingOptions framing={}) |
Shared WireStream lifecycle and framing for binary channels.
WebRTC data channels and WebSocket channels supply a small BinaryChannel adapter; this class supplies Action Engine packetisation, bounded reassembly, backpressure, deadlines, half-close, and abort semantics. External channel callbacks are handed into A11's scheduler before protocol or application work runs.
| using a11::net::ChannelWireStream::OpenOperation = std::function<absl::Status()> |
Transport-specific operation that initiates or accepts the channel.
|
override |
|
inlineexplicitprotected |
|
overridevirtual |
Abort the stream, discarding buffered work.
| status | A non-OK status reported to the peer as the abort reason. |
Implements a11::net::WireStream.
|
overridevirtual |
Begin the stream as the accepting ("accept") side.
| on_message | Invoked for each inbound message (nullopt = peer half-closed). |
| on_done | Invoked once when the stream has finished. |
Implements a11::net::WireStream.
|
overridevirtual |
Implements a11::net::WireStream.
|
overridevirtual |
Await delivery of all buffered outbound messages.
Implements a11::net::WireStream.
|
overridevirtual |
Implements a11::net::WireStream.
|
overridevirtual |
Implements a11::net::WireStream.
|
overridevirtual |
Implements a11::net::WireStream.
|
overridevirtual |
Implements a11::net::WireStream.
|
inline |
Half-close with no trailers.
|
overridevirtual |
Signal that this side will send no more messages.
The terminal marker is queued after buffered outbound messages and, once the peer also half-closes, the stream completes. Inbound messages continue to be delivered until then. Call DrainOutgoingMessages() to await local transport delivery.
| trailers | Optional closing metadata delivered to the peer. |
Implements a11::net::WireStream.
|
virtual |
Signal that this side will send no more messages.
The terminal marker is queued after buffered outbound messages and, once the peer also half-closes, the stream completes. Inbound messages continue to be delivered until then. Call DrainOutgoingMessages() to await local transport delivery.
| trailers | Optional closing metadata delivered to the peer. |
Implements a11::net::WireStream.
|
staticprotected |
|
overridevirtual |
Enqueue a message for delivery to the peer.
Non-blocking.
The message is admitted to this endpoint's outbound queue and delivered asynchronously by the transport task, which is also where backpressure is applied; there is no delivery-order guarantee across messages (see the class comment).
| message | The message to send. |
Implements a11::net::WireStream.
|
inline |
Clear any deadline (equivalent to an infinite deadline).
|
overridevirtual |
Set the absolute deadline after which the stream is aborted.
| deadline | The deadline; absl::InfiniteFuture() disables it. |
Implements a11::net::WireStream.
|
virtual |
Set the absolute deadline after which the stream is aborted.
| deadline | The deadline; absl::InfiniteFuture() disables it. |
Implements a11::net::WireStream.
|
overridevirtual |
Begin the stream as the initiating ("start") side.
| on_message | Invoked for each inbound message (nullopt = peer half-closed). |
| on_done | Invoked once when the stream has finished. |
Implements a11::net::WireStream.