18#ifndef A11_NET_SIGNALLING_H_
19#define A11_NET_SIGNALLING_H_
27#include <absl/status/status.h>
28#include <absl/status/statusor.h>
62 absl::StatusOr<std::string>
ToJson()
const;
65 static absl::StatusOr<SignallingMessage>
FromJson(std::string_view
json);
88 virtual absl::Status
Close() = 0;
107 public std::enable_shared_from_this<SignallingEndpoint> {
113 absl::Status
Close()
override;
122 : state_(std::move(state)) {}
124 std::shared_ptr<State> state_;
138 :
public std::enable_shared_from_this<SignallingService> {
141 static std::shared_ptr<SignallingService>
Create();
151 absl::StatusOr<std::shared_ptr<SignallingEndpoint>>
Connect(
164 : state_(std::move(state)) {}
166 absl::Status Route(
const std::shared_ptr<SignallingEndpoint::State>& sender,
168 void Disconnect(
const std::shared_ptr<SignallingEndpoint::State>&
endpoint,
169 absl::Status status);
170 static void Pump(
const std::shared_ptr<SignallingEndpoint::State>&
endpoint);
172 std::shared_ptr<State> state_;
An identity-bound endpoint into an in-process SignallingService.
Definition signalling.h:107
absl::Status SetOnMessage(OnSignallingMessage on_message) override
Registers the async callback invoked for each inbound message.
Definition signalling.cc:444
~SignallingEndpoint()
Definition signalling.cc:432
absl::Status Close() override
Closes the transport and releases its resources.
Definition signalling.cc:456
std::string identity() const override
Definition signalling.cc:465
absl::Status Send(SignallingMessage message) override
Sends a signalling message to the peer (non-blocking).
Definition signalling.cc:436
absl::Status GetStatus() const override
Definition signalling.cc:475
bool connected() const override
Definition signalling.cc:470
An in-process broker that routes signalling messages by identity.
Definition signalling.h:138
absl::Status Stop()
Stops the service and disconnects all endpoints.
Definition signalling.cc:407
~SignallingService()
Definition signalling.cc:242
std::vector< std::string > Identities() const
Definition signalling.cc:396
static std::shared_ptr< SignallingService > Create()
Definition signalling.cc:233
absl::StatusOr< std::shared_ptr< SignallingEndpoint > > Connect(std::string identity, OnSignallingMessage on_message)
Registers an identity and its inbound-message callback.
Definition signalling.cc:246
bool Contains(std::string_view identity) const
Definition signalling.cc:390
Abstract identity-bound channel over which signalling flows.
Definition signalling.h:80
virtual std::string identity() const =0
virtual ~SignallingTransport()=default
virtual absl::Status Send(SignallingMessage message)=0
Sends a signalling message to the peer (non-blocking).
virtual bool connected() const =0
virtual absl::Status SetOnMessage(OnSignallingMessage on_message)=0
Registers the async callback invoked for each inbound message.
virtual absl::Status GetStatus() const =0
virtual absl::Status Close()=0
Closes the transport and releases its resources.
Completion values used by every asynchronous A11 operation.
std::function< a11::Task(SignallingMessage message)> OnSignallingMessage
Async callback invoked for each inbound SignallingMessage.
Definition signalling.h:71
SignallingMessageType
The kind of payload a SignallingMessage carries.
Definition signalling.h:35
Future< Unit > Task
Asynchronous operation whose only successful result is completion itself.
Definition future.h:403
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
Definition signalling.cc:209
One signalling payload: an SDP description, an ICE candidate, or an error.
Definition signalling.h:48
static absl::StatusOr< SignallingMessage > FromJson(std::string_view json)
Parses a message from its JSON wire representation.
Definition signalling.cc:136
std::string description
SDP offer or answer text.
Definition signalling.h:53
std::string description_type
SDP type, such as offer or answer.
Definition signalling.h:54
SignallingMessageType type
Payload discriminator.
Definition signalling.h:49
std::string sender
Identity of the originating peer.
Definition signalling.h:51
absl::StatusOr< std::string > ToJson() const
Definition signalling.cc:95
absl::Status error
Negotiation failure for kError messages.
Definition signalling.h:57
absl::Status Validate() const
Definition signalling.cc:60
std::string recipient
Identity of the target peer.
Definition signalling.h:52
std::string candidate
ICE candidate text.
Definition signalling.h:55
std::string mid
Media/data-section id for the candidate.
Definition signalling.h:56
Definition signalling.cc:226
const std::string identity
Definition webrtc_wire_stream.cc:90
const std::shared_ptr< SignallingTransport > endpoint
Definition webrtc_wire_stream.cc:92