A11 (C++ runtime)
Native C++ implementation of the A11 action and streaming runtime
Loading...
Searching...
No Matches
wire_stream.h File Reference

A11's transport abstraction: the bidirectional WireStream channel and the options/callbacks that drive it. More...

#include <cstddef>
#include <functional>
#include <optional>
#include <string>
#include <absl/base/nullability.h>
#include <absl/status/status.h>
#include <absl/time/time.h>
#include "a11/concurrency/future.h"
#include "a11/data/types.h"
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  a11::net::WireStreamOptions
 Buffering, sizing, and deadline limits for a WireStream endpoint. More...
 
class  a11::net::WireStream
 A bidirectional, message-oriented channel between two A11 endpoints. More...
 

Namespaces

namespace  a11
 
namespace  a11::net
 

Typedefs

using a11::net::OnMessage = std::function< a11::Task(std::optional< data::WireMessage > message)>
 Called for each inbound message; std::nullopt signals the peer half-closed.
 
using a11::net::OnDone = std::function< a11::Task()>
 Called once, when the stream has fully finished (cleanly or via abort).
 

Functions

absl::StatusOr< data::ByteMapa11::net::NormalizeWireHeaders (data::ByteMap headers)
 Validate and case-normalise a wire header map, returning the normalised copy or a non-OK status if a header name/value is invalid.
 

Variables

constexpr std::string_view a11::net::kAbortStatusHeader = "x-a11-abort-status"
 Trailer key under which an aborting endpoint reports its terminal status.
 
constexpr size_t a11::net::kMaxSingleMessageSize = 32 * 1024 * 1024
 Hard ceiling on the size of a single reassembled inbound WireMessage.
 

Detailed Description

A11's transport abstraction: the bidirectional WireStream channel and the options/callbacks that drive it.

A WireStream carries data::WireMessage values between two endpoints. Everything above it – AsyncNode mirroring, Session multiplexing, remote action dispatch – is written against this one interface, so the concrete transport (in-process, WebSocket/HTTP2, HTTP SSE, WebRTC) is a pluggable detail and a deliberate extension point.