6#include "quicr/detail/messages.h"
8#include <quicr/detail/attributes.h>
15 using namespace quicr;
57 :
Transport(cfg, std::make_shared<ThreadedTickService>(cfg.tick_service_sleep_delay_us))
99 const std::shared_ptr<PublishTrackHandler>& track_handler,
100 bool ephemeral =
false);
113 const std::shared_ptr<PublishTrackHandler>& track_handler);
120 void BindFetchTrack(TransportConnId conn_id, std::shared_ptr<PublishFetchHandler> track_handler);
142 uint64_t track_alias,
143 const SubscribeResponse& subscribe_response);
159 messages::SubscriberPriority priority,
160 messages::GroupOrder group_order,
161 const PublishResponse& publish_response);
242 const std::vector<ConnectionHandle>& subscribers,
285 std::pair<std::optional<messages::SubscribeNamespaceErrorCode>, std::vector<TrackNamespace>>;
306 messages::FilterType filter_type,
308 const messages::SubscribeAttributes& subscribe_attributes);
338 const quicr::messages::FetchAttributes& attributes)
override;
353 const messages::FetchAttributes& attributes);
377 const messages::PublishAttributes& publish_attributes) = 0;
391 bool ProcessCtrlMessage(ConnectionContext& conn_ctx,
BytesSpan msg_bytes)
override;
395 bool stream_header_needed,
397 uint64_t subgroup_id,
399 std::optional<Extensions> extensions,
PublishObjectStatus
Publish status codes.
Definition publish_track_handler.h:29
virtual std::vector< ConnectionHandle > UnannounceReceived(ConnectionHandle connection_handle, const TrackNamespace &track_namespace)=0
Callback notification for unannounce received.
virtual bool OnFetchOk(ConnectionHandle connection_handle, uint64_t request_id, const FullTrackName &track_full_name, const messages::FetchAttributes &attributes)
Event to run on sending FetchOk.
virtual void UnsubscribeReceived(ConnectionHandle connection_handle, uint64_t request_id)=0
Callback notification on unsubscribe received.
void UnbindFetchTrack(ConnectionHandle conn_id, const std::shared_ptr< PublishFetchHandler > &track_handler)
Unbind a server fetch publisher track handler.
void MetricsSampled(ConnectionHandle connection_handle, const ConnectionMetrics &metrics) override
Notification callback to provide sampled metrics.
void ResolveAnnounce(ConnectionHandle connection_handle, uint64_t request_id, const TrackNamespace &track_namespace, const std::vector< ConnectionHandle > &subscribers, const AnnounceResponse &announce_response)
Accept or reject an announce that was received.
void UnbindPublisherTrack(ConnectionHandle connection_handle, ConnectionHandle src_id, const std::shared_ptr< PublishTrackHandler > &track_handler)
Unbind a server publish track handler.
virtual void FetchCancelReceived(ConnectionHandle connection_handle, uint64_t request_id)=0
Callback notification on receiving a FetchCancel message.
void BindPublisherTrack(ConnectionHandle connection_handle, ConnectionHandle src_id, uint64_t request_id, const std::shared_ptr< PublishTrackHandler > &track_handler, bool ephemeral=false)
Bind a server publish track handler based on a subscribe.
std::pair< std::optional< messages::SubscribeNamespaceErrorCode >, std::vector< TrackNamespace > > SubscribeAnnouncesResponse
Callback notification for new subscribe announces received.
Definition server.h:284
virtual void SubscribeReceived(ConnectionHandle connection_handle, uint64_t request_id, messages::FilterType filter_type, const FullTrackName &track_full_name, const messages::SubscribeAttributes &subscribe_attributes)
Callback notification for new subscribe received.
virtual std::optional< messages::Location > GetLargestAvailable(const FullTrackName &track_name)
Get the largest available location for the given track, if any.
virtual void SubscribeDoneReceived(ConnectionHandle connection_handle, uint64_t request_id)=0
Callback notification on Subscribe Done received.
virtual void ResolveSubscribe(ConnectionHandle connection_handle, uint64_t request_id, uint64_t track_alias, const SubscribeResponse &subscribe_response)
Accept or reject an subscribe that was received.
void BindFetchTrack(TransportConnId conn_id, std::shared_ptr< PublishFetchHandler > track_handler)
Bind a server fetch publisher track handler.
Status Start()
Starts server transport thread to listen for new connections.
virtual SubscribeAnnouncesResponse SubscribeAnnouncesReceived(ConnectionHandle connection_handle, const TrackNamespace &prefix_namespace, const PublishAnnounceAttributes &announce_attributes)
virtual void AnnounceReceived(ConnectionHandle connection_handle, const TrackNamespace &track_namespace, const PublishAnnounceAttributes &publish_announce_attributes)
Callback notification for new announce received that needs to be authorized.
virtual ClientSetupResponse ClientSetupReceived(ConnectionHandle connection_handle, const ClientSetupAttributes &client_setup_attributes)=0
Callback on client setup message.
virtual bool FetchReceived(ConnectionHandle connection_handle, uint64_t request_id, const FullTrackName &track_full_name, const quicr::messages::FetchAttributes &attributes) override
Event to run on receiving Fetch request.
void NewConnectionAccepted(ConnectionHandle connection_handle, const ConnectionRemoteInfo &remote) override
Callback notification on new connection.
void ConnectionStatusChanged(ConnectionHandle connection_handle, ConnectionStatus status) override
Callback notification for connection status/state change.
virtual void PublishReceived(ConnectionHandle connection_handle, uint64_t request_id, const FullTrackName &track_full_name, const messages::PublishAttributes &publish_attributes)=0
Callback notification for new publish received.
Server(const ServerConfig &cfg, std::shared_ptr< ThreadedTickService > tick_service)
Definition server.h:61
virtual void ResolvePublish(ConnectionHandle connection_handle, uint64_t request_id, bool forward, messages::SubscriberPriority priority, messages::GroupOrder group_order, const PublishResponse &publish_response)
Accept or reject publish that was received.
Server(const ServerConfig &cfg)
MoQ Server constructor to create the MOQ server mode instance.
Definition server.h:56
virtual void UnsubscribeAnnouncesReceived(ConnectionHandle connection_handle, const TrackNamespace &prefix_namespace)=0
Callback notification for Unsubscribe announces received.
An N-tuple representation of a MOQ namespace.
Definition track_name.h:20
Status
Status of the transport.
Definition transport.h:46
friend class PublishFetchHandler
Definition transport.h:613
ConnectionStatus
Connection status codes.
Definition transport.h:81
Definition transport.h:28
uint64_t ConnectionHandle
Definition common.h:22
std::span< const Byte > BytesSpan
Definition common.h:21
Client Setup Attributes.
Definition common.h:37
Full track name struct.
Definition track_name.h:260
Publish announce attributes.
Definition common.h:29
Response to received MOQT Announce message.
Definition server.h:35
ReasonCode
Definition server.h:42
@ kOk
Definition server.h:43
@ kInternalError
Definition server.h:44
ReasonCode reason_code
Definition server.h:46
std::optional< messages::ReasonPhrase > error_reason
Definition server.h:48
Response to received MOQT ClientSetup message.
Definition server.h:29
Connection remote information.
Definition transport.h:93