9#include <quicr/detail/attributes.h>
15 using namespace quicr;
31 :
Transport(cfg, std::make_shared<ThreadedTickService>(cfg.tick_service_sleep_delay_us))
40 return std::shared_ptr<Client>(
new Client(cfg));
118 std::optional<messages::SubscribeNamespaceErrorCode> error_code,
119 std::optional<messages::ReasonPhrase> reason);
139 const messages::SubscribeAttributes& subscribe_attributes);
154 uint64_t track_alias,
155 const SubscribeResponse& subscribe_response);
171 const quicr::messages::FetchAttributes& attributes)
override;
178 void BindFetchTrack(TransportConnId conn_id, std::shared_ptr<PublishFetchHandler> track_handler);
216 if (connection_handle_) {
230 const messages::SubscribeAttributes& subscribe_attributes = {})
232 if (connection_handle_) {
245 if (connection_handle_) {
292 if (!connection_handle_) {
296 SendSubscribeAnnounces(*connection_handle_, prefix_namespace);
306 if (!connection_handle_) {
310 SendUnsubscribeAnnounces(*connection_handle_, prefix_namespace);
321 if (connection_handle_) {
335 if (connection_handle_) {
345 void FetchTrack(std::shared_ptr<FetchTrackHandler> track_handler)
347 if (connection_handle_.has_value()) {
359 if (connection_handle_.has_value()) {
372 bool ProcessCtrlMessage(ConnectionContext& conn_ctx,
BytesSpan stream_buffer)
override;
376 bool stream_header_needed,
378 uint64_t subgroup_id,
380 std::optional<Extensions> extensions,
385 connection_handle_ = connection_handle;
388 void SetStatus(
Status status)
394 std::optional<ConnectionHandle> connection_handle_;
void SubscribeTrack(std::shared_ptr< SubscribeTrackHandler > track_handler)
Subscribe to a track.
Definition client.h:214
PublishAnnounceStatus GetAnnounceStatus(const TrackNamespace &track_namespace)
Get announce status for namespace.
virtual void UnpublishedSubscribeReceived(const FullTrackName &track_full_name, const messages::SubscribeAttributes &subscribe_attributes)
Callback notification for new subscribe received that doesn't match an existing publish track.
void BindFetchTrack(TransportConnId conn_id, std::shared_ptr< PublishFetchHandler > track_handler)
Bind a server fetch publisher track handler.
void CancelFetchTrack(std::shared_ptr< FetchTrackHandler > track_handler)
Cancel a given Fetch track handler.
Definition client.h:357
std::optional< ConnectionHandle > GetConnectionHandle() const
Get the connection handle.
Definition client.h:369
void UnsubscribeAnnounces(const TrackNamespace &prefix_namespace)
Unsubscribe announces to prefix namespace.
Definition client.h:304
virtual void AnnounceStatusChanged(const TrackNamespace &track_namespace, const PublishAnnounceStatus status)
Notification on publish announcement status change.
void UnbindFetchTrack(ConnectionHandle conn_id, const std::shared_ptr< PublishFetchHandler > &track_handler)
Unbind a server fetch publisher track handler.
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.
bool FetchReceived(quicr::ConnectionHandle connection_handle, uint64_t request_id, const quicr::FullTrackName &track_full_name, const quicr::messages::FetchAttributes &attributes) override
Callback on fetch message.
void UnpublishTrack(std::shared_ptr< PublishTrackHandler > track_handler)
Unpublish track.
Definition client.h:333
void FetchTrack(std::shared_ptr< FetchTrackHandler > track_handler)
Fetch track.
Definition client.h:345
virtual void ServerSetupReceived(const ServerSetupAttributes &server_setup_attributes)
Callback on server setup message.
void PublishAnnounce(const TrackNamespace &track_namespace)
Publish a track namespace.
void SubscribeAnnounces(const TrackNamespace &prefix_namespace)
Subscribe Announces to prefix namespace.
Definition client.h:290
void PublishUnannounce(const TrackNamespace &track_namespace)
Unannounce a publish namespace.
virtual void UnannounceReceived(const TrackNamespace &track_namespace)
Callback notification for unannounce received by subscribe announces.
Client(const ClientConfig &cfg)
MoQ Client Constructor to create the client mode instance.
Definition client.h:30
virtual uint64_t RequestTrackStatus(const FullTrackName &track_full_name, const messages::SubscribeAttributes &subscribe_attributes={})
Request track status.
Definition client.h:229
static std::shared_ptr< Client > Create(const ClientConfig &cfg)
Definition client.h:38
virtual void AnnounceReceived(const TrackNamespace &track_namespace, const PublishAnnounceAttributes &announce_attributes)
Callback notification for announce received by subscribe announces.
void MetricsSampled(const ConnectionMetrics &metrics) override
Notification callback to provide sampled metrics.
virtual void SubscribeAnnouncesStatusChanged(const TrackNamespace &track_namespace, std::optional< messages::SubscribeNamespaceErrorCode > error_code, std::optional< messages::ReasonPhrase > reason)
Callback notification for subscribe announces OK or Error.
void UnsubscribeTrack(std::shared_ptr< SubscribeTrackHandler > track_handler)
Unsubscribe track.
Definition client.h:243
Status Disconnect()
Disconnect the client connection gracefully.
void PublishTrack(std::shared_ptr< PublishTrackHandler > track_handler)
Publish to a track.
Definition client.h:319
Status Connect()
Starts a client connection via a transport thread.
Definition publish_fetch_handler.h:11
PublishObjectStatus
Publish status codes.
Definition publish_track_handler.h:29
An N-tuple representation of a MOQ namespace.
Definition track_name.h:20
void UnpublishTrack(ConnectionHandle connection_handle, const std::shared_ptr< PublishTrackHandler > &track_handler)
Unpublish track.
Status
Status of the transport.
Definition transport.h:46
void CancelFetchTrack(ConnectionHandle connection_handle, std::shared_ptr< FetchTrackHandler > track_handler)
Cancel Fetch track.
void SubscribeTrack(ConnectionHandle connection_handle, std::shared_ptr< SubscribeTrackHandler > track_handler)
Subscribe to a track.
uint64_t RequestTrackStatus(ConnectionHandle connection_handle, const FullTrackName &track_full_name, const messages::SubscribeAttributes &subscribe_attributes)
Request track status.
friend class Client
Definition transport.h:610
void FetchTrack(ConnectionHandle connection_handle, std::shared_ptr< FetchTrackHandler > track_handler)
Fetch track.
void PublishTrack(ConnectionHandle connection_handle, std::shared_ptr< PublishTrackHandler > track_handler)
Publish to a track.
void UnsubscribeTrack(ConnectionHandle connection_handle, const std::shared_ptr< SubscribeTrackHandler > &track_handler)
Unsubscribe track.
virtual void StatusChanged(Status status)
Callback notification for status/state change.
Definition transport.h:257
Definition transport.h:28
uint64_t ConnectionHandle
Definition common.h:22
std::span< const Byte > BytesSpan
Definition common.h:21
PublishAnnounceStatus
Publish Announce Status.
Definition common.h:54
Full track name struct.
Definition track_name.h:260
Publish announce attributes.
Definition common.h:29
Server Setup Attributes.
Definition common.h:45