6#include <quicr/detail/base_track_handler.h>
7#include <quicr/detail/messages.h>
8#include <quicr/detail/stream_buffer.h>
56 messages::ObjectPriority priority,
57 messages::GroupOrder group_order,
58 messages::FilterType filter_type)
59 : BaseTrackHandler(full_track_name)
61 , group_order_(group_order)
62 , filter_type_(filter_type)
75 static std::shared_ptr<SubscribeTrackHandler>
Create(
77 messages::ObjectPriority priority,
78 messages::GroupOrder group_order = messages::GroupOrder::kAscending,
79 messages::FilterType filter_type = messages::FilterType::kLatestObject)
81 return std::shared_ptr<SubscribeTrackHandler>(
97 void SetPriority(uint8_t priority)
noexcept { priority_ = priority; }
104 constexpr messages::ObjectPriority
GetPriority() const noexcept {
return priority_; }
112 constexpr messages::GroupOrder
GetGroupOrder() const noexcept {
return group_order_; }
120 constexpr messages::FilterType
GetFilterType() const noexcept {
return filter_type_; }
122 constexpr std::optional<messages::GroupId>
GetLatestGroupID() const noexcept {
return latest_group_id_; }
123 constexpr std::optional<messages::ObjectId>
GetLatestObjectID() const noexcept {
return latest_object_id_; }
125 constexpr void SetLatestGroupID(messages::GroupId new_id)
noexcept { latest_group_id_ = new_id; }
126 constexpr void SetLatestObjectID(messages::ObjectId new_id)
noexcept { latest_object_id_ = new_id; }
159 std::shared_ptr<
const std::vector<uint8_t>> data);
168 virtual void DgramDataRecv(std::shared_ptr<
const std::vector<uint8_t>> data);
232 messages::ObjectPriority priority_;
233 messages::GroupOrder group_order_;
234 messages::FilterType filter_type_;
235 StreamBuffer<uint8_t> stream_buffer_;
236 uint64_t current_stream_id_{ 0 };
237 std::optional<messages::GroupId> latest_group_id_;
238 std::optional<messages::ObjectId> latest_object_id_;
MoQ Client.
Definition client.h:21
MoQ Server.
Definition server.h:21
MOQ track handler for subscribed track.
Definition subscribe_track_handler.h:22
constexpr std::optional< messages::GroupId > GetLatestGroupID() const noexcept
Definition subscribe_track_handler.h:122
Error
Receive status codes.
Definition subscribe_track_handler.h:28
std::function< void(messages::SubscribeId, messages::TrackAlias)> new_group_request_callback_
Definition subscribe_track_handler.h:217
static std::shared_ptr< SubscribeTrackHandler > Create(const FullTrackName &full_track_name, messages::ObjectPriority priority, messages::GroupOrder group_order=messages::GroupOrder::kAscending, messages::FilterType filter_type=messages::FilterType::kLatestObject)
Create shared Subscribe track handler.
Definition subscribe_track_handler.h:75
SubscribeTrackHandler(const FullTrackName &full_track_name, messages::ObjectPriority priority, messages::GroupOrder group_order, messages::FilterType filter_type)
Subscribe track handler constructor.
Definition subscribe_track_handler.h:55
virtual void DgramDataRecv(std::shared_ptr< const std::vector< uint8_t > > data)
Notification of received datagram data.
void SetStatus(Status status) noexcept
Set the subscribe status.
Definition subscribe_track_handler.h:224
virtual void MetricsSampled(const SubscribeTrackMetrics &metrics)
Notification callback to provide sampled metrics.
Definition subscribe_track_handler.h:203
constexpr Status GetStatus() const noexcept
Get the status of the subscribe.
Definition subscribe_track_handler.h:90
SubscribeTrackMetrics subscribe_track_metrics_
Subscribe metrics for the track.
Definition subscribe_track_handler.h:215
virtual void StreamDataRecv(bool is_start, uint64_t stream_id, std::shared_ptr< const std::vector< uint8_t > > data)
Notification of received stream data slice.
constexpr void SetLatestGroupID(messages::GroupId new_id) noexcept
Definition subscribe_track_handler.h:125
constexpr messages::FilterType GetFilterType() const noexcept
Get subscription filter type.
Definition subscribe_track_handler.h:120
void RequestNewGroup() noexcept
Status
Status codes for the subscribe track.
Definition subscribe_track_handler.h:39
@ kSendingUnsubscribe
In this state, callbacks will not be called.
virtual void PartialObjectReceived(const ObjectHeaders &object_headers, BytesSpan data)
Notification of a partial object received data object.
Definition subscribe_track_handler.h:180
virtual void ObjectReceived(const ObjectHeaders &object_headers, BytesSpan data)
Notification of received [full] data object.
constexpr std::optional< messages::ObjectId > GetLatestObjectID() const noexcept
Definition subscribe_track_handler.h:123
void SetPriority(uint8_t priority) noexcept
Set the priority of received data.
Definition subscribe_track_handler.h:97
virtual void StatusChanged(Status status)
Notification of subscribe status.
Definition subscribe_track_handler.h:192
constexpr messages::GroupOrder GetGroupOrder() const noexcept
Get subscription group order.
Definition subscribe_track_handler.h:112
constexpr messages::ObjectPriority GetPriority() const noexcept
Get subscription priority.
Definition subscribe_track_handler.h:104
constexpr void SetLatestObjectID(messages::ObjectId new_id) noexcept
Definition subscribe_track_handler.h:126
MOQ Implementation supporting both client and server modes.
Definition transport.h:34
Definition transport.h:26
Span< const Byte > BytesSpan
Definition common.h:23
Full track name struct.
Definition track_name.h:267