7#include <quicr/detail/base_track_handler.h>
82 uint8_t default_priority,
84 : BaseTrackHandler(full_track_name)
85 , default_track_mode_(track_mode)
86 , default_priority_(default_priority)
87 , default_ttl_(default_ttl)
101 TrackMode track_mode,
102 uint8_t default_priority,
103 uint32_t default_ttl)
105 return std::shared_ptr<PublishTrackHandler>(
274 bool stream_header_needed,
276 uint64_t subgroup_id,
278 std::optional<Extensions> extensions,
293 using ForwardDataFunction =
296 bool stream_header_needed,
297 std::shared_ptr<
const std::vector<uint8_t>> data)>;
304 void SetDataContextId(uint64_t data_ctx_id)
noexcept { publish_data_ctx_id_ = data_ctx_id; };
309 constexpr uint64_t GetDataContextId() const noexcept {
return publish_data_ctx_id_; };
315 void SetStatus(
Status status)
noexcept
317 publish_status_ = status;
325 TrackMode default_track_mode_;
326 uint8_t default_priority_;
327 uint32_t default_ttl_;
329 uint64_t publish_data_ctx_id_;
330 PublishObjFunction publish_object_func_;
331 ForwardDataFunction forward_publish_data_func_;
333 uint64_t prev_object_group_id_{ 0 };
334 uint64_t prev_sub_group_id_{ 0 };
335 uint64_t prev_object_id_{ 0 };
336 uint64_t object_payload_remaining_length_{ 0 };
337 bool sent_first_header_{
false };
339 Bytes object_msg_buffer_;
MoQ Client.
Definition client.h:21
MOQ track handler for published track.
Definition publish_track_handler.h:22
constexpr Status GetStatus() const noexcept
Get the publish status.
Definition publish_track_handler.h:161
PublishTrackHandler(const FullTrackName &full_track_name, TrackMode track_mode, uint8_t default_priority, uint32_t default_ttl)
Publish track handler constructor.
Definition publish_track_handler.h:80
void SetDefaultTrackMode(const TrackMode track_mode) noexcept
set/update the default track mode for objects
Definition publish_track_handler.h:154
static std::shared_ptr< PublishTrackHandler > Create(const FullTrackName &full_track_name, TrackMode track_mode, uint8_t default_priority, uint32_t default_ttl)
Create a shared Publish track handler.
Definition publish_track_handler.h:100
PublishObjectStatus PublishPartialObject(const ObjectHeaders &object_headers, BytesSpan data)
Publish object to the announced track.
PublishObjectStatus ForwardPublishedData(bool is_new_stream, std::shared_ptr< const std::vector< uint8_t > > data)
Forward received object data to subscriber/relay/remote client.
void SetDefaultPriority(const uint8_t priority) noexcept
set/update the default priority for published objects
Definition publish_track_handler.h:144
void SetDefaultTTL(const uint32_t ttl) noexcept
set/update the default TTL expiry for published objects
Definition publish_track_handler.h:149
PublishObjectStatus PublishObject(const ObjectHeaders &object_headers, BytesSpan data)
Publish [full] object.
virtual void StatusChanged(Status status)
Notification of publish track status change.
virtual void MetricsSampled(const PublishTrackMetrics &metrics)
Notification callback to provide sampled metrics.
PublishObjectStatus
Publish status codes.
Definition publish_track_handler.h:28
@ kObjectContinuationDataNeeded
@ kObjectDataIncomplete
PublishObject() was called when continuation data remains.
@ kObjectPayloadLengthExceeded
@ kPreviousObjectTruncated
@ kPreviousObjectNotCompleteMustStartNewTrack
@ kPreviousObjectNotCompleteMustStartNewGroup
Status
Status codes for the publish track.
Definition publish_track_handler.h:59
@ kSendingUnannounce
In this state, callbacks will not be called.
@ kPendingAnnounceResponse
PublishTrackMetrics publish_track_metrics_
Publish metrics for the track.
Definition publish_track_handler.h:251
MoQ Server.
Definition server.h:21
MOQ Implementation supporting both client and server modes.
Definition transport.h:34
Definition transport.h:26
std::vector< Byte > Bytes
Definition common.h:22
Span< const Byte > BytesSpan
Definition common.h:23
Full track name struct.
Definition track_name.h:267