15#ifndef A11_NET_WEBSOCKET_SIGNALLING_H_
16#define A11_NET_WEBSOCKET_SIGNALLING_H_
23#include <absl/base/nullability.h>
24#include <absl/status/status.h>
25#include <absl/status/statusor.h>
26#include <absl/time/time.h>
59 public std::enable_shared_from_this<WebSocketSignallingClient> {
63 struct ConstructorToken {};
76 std::string url, std::string
identity,
84 absl::Status
Close()
override;
92 std::shared_ptr<State> state)
93 : state_(std::
move(state)) {}
96 static void Pump(
const std::shared_ptr<State>& state);
97 static void Fail(
const std::shared_ptr<State>& state, absl::Status status);
99 std::shared_ptr<State> state_;
128 :
public std::enable_shared_from_this<WebSocketSignallingServer> {
137 static absl::StatusOr<std::shared_ptr<WebSocketSignallingServer>>
Create(
138 std::shared_ptr<SignallingService>
service,
158 : state_(std::move(state)) {}
160 static void Remove(
const std::shared_ptr<State>& state, std::string
identity);
162 std::shared_ptr<State> state_;
Shared handle to one asynchronous result.
Definition future.h:110
Abstract identity-bound channel over which signalling flows.
Definition signalling.h:80
A SignallingTransport that relays messages over a WebSocket.
Definition websocket_signalling.h:59
absl::Status GetStatus() const override
Definition websocket_signalling.cc:419
void *absl_nullable GetImpl() const
Definition websocket_signalling.cc:424
~WebSocketSignallingClient() override
Definition websocket_signalling.cc:354
bool connected() const override
Definition websocket_signalling.cc:414
absl::Status Send(SignallingMessage message) override
Sends a signalling message to the peer (non-blocking).
Definition websocket_signalling.cc:358
absl::Status Close() override
Closes the transport and releases its resources.
Definition websocket_signalling.cc:391
absl::Status SetOnMessage(OnSignallingMessage on_message) override
Registers the async callback invoked for each inbound message.
Definition websocket_signalling.cc:378
std::string identity() const override
Definition websocket_signalling.cc:410
WebSocketSignallingClient(ConstructorToken, std::shared_ptr< State > state)
Definition websocket_signalling.h:91
static a11::Future< std::shared_ptr< WebSocketSignallingClient > > Connect(std::string url, std::string identity, OnSignallingMessage on_message={}, WebSocketSignallingClientOptions options={})
Asynchronously connects to a WebSocket signalling server.
Definition websocket_signalling.cc:154
Fronts an in-process SignallingService over a WebSocket.
Definition websocket_signalling.h:128
~WebSocketSignallingServer()
Definition websocket_signalling.cc:624
absl::Status Stop()
Stops the server and closes all client connections.
Definition websocket_signalling.cc:628
bool running() const
Definition websocket_signalling.cc:656
static absl::StatusOr< std::shared_ptr< WebSocketSignallingServer > > Create(std::shared_ptr< SignallingService > service, WebSocketSignallingServerOptions options={})
Creates a WebSocket signalling server fronting service.
Definition websocket_signalling.cc:462
std::uint16_t port() const
Definition websocket_signalling.cc:651
std::shared_ptr< SignallingService > service() const
Definition websocket_signalling.cc:662
void *absl_nullable GetImpl() const
Definition websocket_signalling.cc:666
Completion values used by every asynchronous A11 operation.
A11's nghttp2 HTTP/2 client, server, and streaming primitives.
std::function< a11::Task(SignallingMessage message)> OnSignallingMessage
Async callback invoked for each inbound SignallingMessage.
Definition signalling.h:71
Future< T > SubmitWithCancellationHook(absl::AnyInvocable< absl::StatusOr< T >() && > work, std::function< void()> cancellation_hook, thread::TreeOptions tree_options)
Run work on A11's fiber pool with application-specific cancellation.
Definition executor.h:30
Out-of-band signalling used to negotiate WebRTC peer connections.
Body-size limits, buffering thresholds, deadline, and TLS for an HTTP/2 client or server.
Definition http2.h:103
One signalling payload: an SDP description, an ICE candidate, or an error.
Definition signalling.h:48
Connection tuning for a WebSocketSignallingClient.
Definition websocket_signalling.h:40
absl::Time deadline
Registration deadline.
Definition websocket_signalling.h:42
size_t max_message_size
Inbound JSON message limit.
Definition websocket_signalling.h:43
absl::Status Validate() const
Definition websocket_signalling.cc:120
Http2Options http2_options
HTTP/2 connection and TLS policy.
Definition websocket_signalling.h:41
Definition websocket_signalling.cc:129
Listen address and limits for a WebSocketSignallingServer.
Definition websocket_signalling.h:108
size_t max_message_size
Inbound JSON message limit.
Definition websocket_signalling.h:114
std::uint16_t port
Listen port; zero requests an ephemeral port.
Definition websocket_signalling.h:112
absl::Status Validate() const
Definition websocket_signalling.cc:429
Http2Options http2_options
Server HTTP/2 and TLS policy.
Definition websocket_signalling.h:113
std::string path_prefix
Prefix before identity registration paths.
Definition websocket_signalling.h:109
std::string bind_address
Local listen address.
Definition websocket_signalling.h:111
Definition websocket_signalling.cc:443
const std::string identity
Definition webrtc_wire_stream.cc:90