|
A11 (C++ runtime)
Native C++ implementation of the A11 action and streaming runtime
|
Common base for the client and server HTTP SSE wire streams. More...
#include <cpp/a11/net/http_sse_wire_stream.h>
Classes | |
| struct | State |
Public Member Functions | |
| ~HttpSseWireStream () override=default | |
| 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 |
| HttpHeaders | GetHttpRequestHeaders () const |
| std::optional< HttpHeaders > | GetHttpResponseHeaders () const |
| absl::Status | SetHttpRequestHeaders (HttpHeaders headers) |
| Sets HTTP headers to send on the SSE request; call before connecting. | |
| absl::Status | SetHttpResponseHeaders (HttpHeaders headers) |
| Sets HTTP headers to send on the SSE response (server side). | |
| a11::Task | WaitForHttpHeaders () const |
| 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 Types | |
| enum class | Role { kClient , kServer } |
Protected Member Functions | |
| HttpSseWireStream (Role role, std::string id, HttpSseOptions options, InProcessWireStream::Pair pair, std::shared_ptr< State > state) | |
| a11::Task | StartEndpoint (bool accept, OnMessage on_message, OnDone on_done) |
| a11::Task | StartInternalBridge () |
| a11::Task | HandleBridgeMessage (std::optional< data::WireMessage > message) |
| a11::Task | HandleBridgeDone () |
| a11::Task | ReceiveTransportMessage (data::WireMessage message) |
| void | FailTransport (absl::Status status) |
| void | MarkHttpHeadersReady (HttpHeaders headers) |
| void | SetId (std::string id) |
| HttpSseOptions | options () const |
| std::shared_ptr< InProcessWireStream > | bridge () const |
| virtual a11::Task | OpenTransport ()=0 |
| virtual absl::Status | Transmit (data::WireMessage message)=0 |
| virtual void *absl_nullable | TransportImpl () const =0 |
| virtual void | TransportDone () |
Friends | |
| class | HttpSseServer |
Common base for the client and server HTTP SSE wire streams.
Implements the WireStream interface on top of an internal in-process bridge, delegating the actual HTTP/2 transport to the concrete subclass. It also exposes the transport-level HTTP request/response headers so agents can attach or inspect auth and routing metadata.
|
strongprotected |
|
overridedefault |
|
protected |
|
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.
|
protected |
|
overridevirtual |
Implements a11::net::WireStream.
|
overridevirtual |
Await delivery of all buffered outbound messages.
Implements a11::net::WireStream.
|
protected |
| HttpHeaders a11::net::HttpSseWireStream::GetHttpRequestHeaders | ( | ) | const |
| std::optional< HttpHeaders > a11::net::HttpSseWireStream::GetHttpResponseHeaders | ( | ) | const |
|
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.
|
protected |
|
protected |
|
protected |
Implemented in a11::net::HttpSseClientWireStream, and a11::net::HttpSseServerWireStream.
|
protected |
|
protected |
|
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.
| absl::Status a11::net::HttpSseWireStream::SetHttpRequestHeaders | ( | HttpHeaders | headers | ) |
Sets HTTP headers to send on the SSE request; call before connecting.
| absl::Status a11::net::HttpSseWireStream::SetHttpResponseHeaders | ( | HttpHeaders | headers | ) |
Sets HTTP headers to send on the SSE response (server side).
|
protected |
|
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.
|
protected |
|
protected |
|
protectedpure virtual |
Implemented in a11::net::HttpSseClientWireStream, and a11::net::HttpSseServerWireStream.
Reimplemented in a11::net::HttpSseServerWireStream.
|
protectedpure virtual |
Implemented in a11::net::HttpSseClientWireStream, and a11::net::HttpSseServerWireStream.
| a11::Task a11::net::HttpSseWireStream::WaitForHttpHeaders | ( | ) | const |
|
friend |