A11 (C++ runtime)
Native C++ implementation of the A11 action and streaming runtime
Loading...
Searching...
No Matches
a11::net::HttpSseClientWireStream Class Referencefinal

The client-side HTTP SSE wire stream, dialing out to a server URL. More...

#include <cpp/a11/net/http_sse_wire_stream.h>

Inheritance diagram for a11::net::HttpSseClientWireStream:
[legend]

Classes

struct  ClientState
 

Public Member Functions

std::shared_ptr< Http2Clientclient () const
 
 HttpSseClientWireStream (ConstructorToken, std::string url, HttpSseOptions options, InProcessWireStream::Pair pair, std::shared_ptr< State > state, std::shared_ptr< ClientState > client_state)
 
- Public Member Functions inherited from a11::net::HttpSseWireStream
 ~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::ByteMapGetTrailers () const override
 
std::string GetId () const override
 
void *absl_nullable GetImpl () const override
 
HttpHeaders GetHttpRequestHeaders () const
 
std::optional< HttpHeadersGetHttpResponseHeaders () 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).
 

Static Public Member Functions

static absl::StatusOr< std::shared_ptr< HttpSseClientWireStream > > Create (std::string url, HttpSseOptions options={}, std::shared_ptr< Http2Client > client=nullptr, HttpHeaders request_headers={})
 Creates a client SSE wire stream connecting to url.
 

Protected Member Functions

a11::Task OpenTransport () override
 
absl::Status Transmit (data::WireMessage message) override
 
void *absl_nullable TransportImpl () const override
 
- Protected Member Functions inherited from a11::net::HttpSseWireStream
 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< InProcessWireStreambridge () const
 
virtual void TransportDone ()
 

Additional Inherited Members

- Protected Types inherited from a11::net::HttpSseWireStream
enum class  Role { kClient , kServer }
 

Detailed Description

The client-side HTTP SSE wire stream, dialing out to a server URL.

The transport an agent uses to exchange messages with a remote service over HTTP/2 SSE. The connection opens lazily and runs asynchronously.

Constructor & Destructor Documentation

◆ HttpSseClientWireStream()

a11::net::HttpSseClientWireStream::HttpSseClientWireStream ( ConstructorToken  ,
std::string  url,
HttpSseOptions  options,
InProcessWireStream::Pair  pair,
std::shared_ptr< State state,
std::shared_ptr< ClientState client_state 
)

Member Function Documentation

◆ client()

std::shared_ptr< Http2Client > a11::net::HttpSseClientWireStream::client ( ) const
Returns
The HTTP/2 client backing this stream (reusable for more streams).

◆ Create()

absl::StatusOr< std::shared_ptr< HttpSseClientWireStream > > a11::net::HttpSseClientWireStream::Create ( std::string  url,
HttpSseOptions  options = {},
std::shared_ptr< Http2Client client = nullptr,
HttpHeaders  request_headers = {} 
)
static

Creates a client SSE wire stream connecting to url.

Parameters
urlThe server URL to connect to.
optionsEndpoint paths and transport tuning.
clientOptional existing Http2Client to reuse; a new one is created when null.
request_headersExtra HTTP headers to send on the connect request.
Returns
The stream, or an error status.

◆ OpenTransport()

a11::Task a11::net::HttpSseClientWireStream::OpenTransport ( )
overrideprotectedvirtual

◆ Transmit()

absl::Status a11::net::HttpSseClientWireStream::Transmit ( data::WireMessage  message)
overrideprotectedvirtual

◆ TransportImpl()

void *absl_nullable a11::net::HttpSseClientWireStream::TransportImpl ( ) const
overrideprotectedvirtual

The documentation for this class was generated from the following files: