LibQuicR
Loading...
Searching...
No Matches
fetch_track_handler.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) 2024 Cisco Systems
2// SPDX-License-Identifier: BSD-2-Clause
3
4#pragma once
5
6#include <quicr/detail/messages.h>
7#include <quicr/metrics.h>
9
10namespace quicr {
12 {
13 protected:
25 FetchTrackHandler(const FullTrackName& full_track_name,
26 messages::SubscriberPriority priority,
27 messages::GroupOrder group_order,
28 messages::GroupId start_group,
29 messages::GroupId end_group,
30 messages::GroupId start_object,
31 messages::GroupId end_object)
32 : SubscribeTrackHandler(full_track_name, priority, group_order, messages::FilterType::kNextGroupStart)
33 , start_group_(start_group)
34 , start_object_(start_object)
35 , end_group_(end_group)
36 , end_object_(end_object)
37 {
38 }
39
40 public:
54 static std::shared_ptr<FetchTrackHandler> Create(const FullTrackName& full_track_name,
55 messages::SubscriberPriority priority,
56 messages::GroupOrder group_order,
57 messages::GroupId start_group,
58 messages::GroupId end_group,
59 messages::GroupId start_object,
60 messages::GroupId end_object)
61 {
62 return std::shared_ptr<FetchTrackHandler>(new FetchTrackHandler(
63 full_track_name, priority, group_order, start_group, end_group, start_object, end_object));
64 }
65
70 constexpr const messages::GroupId& GetStartGroup() const noexcept { return start_group_; }
71
76 constexpr const messages::GroupId& GetEndGroup() const noexcept { return end_group_; }
77
82 constexpr const messages::GroupId& GetStartObject() const noexcept { return start_object_; }
83
88 constexpr const messages::GroupId& GetEndObject() const noexcept { return end_object_; }
89
90 void StreamDataRecv(bool is_start,
91 uint64_t stream_id,
92 std::shared_ptr<const std::vector<uint8_t>> data) override;
93
94 private:
95 messages::GroupId start_group_;
96 messages::GroupId start_object_;
97 messages::GroupId end_group_;
98 messages::GroupId end_object_;
99
100 friend class Transport;
101 friend class Client;
102 friend class Server;
103 };
104
105} // namespace moq
constexpr const messages::GroupId & GetEndObject() const noexcept
Get the id of the object one past the end of the group range.
Definition fetch_track_handler.h:88
friend class Transport
Definition fetch_track_handler.h:100
friend class Client
Definition fetch_track_handler.h:101
FetchTrackHandler(const FullTrackName &full_track_name, messages::SubscriberPriority priority, messages::GroupOrder group_order, messages::GroupId start_group, messages::GroupId end_group, messages::GroupId start_object, messages::GroupId end_object)
Fetch track handler constructor.
Definition fetch_track_handler.h:25
constexpr const messages::GroupId & GetStartObject() const noexcept
Get the starting object id of the Group range.
Definition fetch_track_handler.h:82
constexpr const messages::GroupId & GetEndGroup() const noexcept
Get the id of the group one past the end of the Fetch range.
Definition fetch_track_handler.h:76
friend class Server
Definition fetch_track_handler.h:102
void StreamDataRecv(bool is_start, uint64_t stream_id, std::shared_ptr< const std::vector< uint8_t > > data) override
Notification of received stream data slice.
static std::shared_ptr< FetchTrackHandler > Create(const FullTrackName &full_track_name, messages::SubscriberPriority priority, messages::GroupOrder group_order, messages::GroupId start_group, messages::GroupId end_group, messages::GroupId start_object, messages::GroupId end_object)
Create shared Fetch track handler.
Definition fetch_track_handler.h:54
constexpr const messages::GroupId & GetStartGroup() const noexcept
Get the starting group id of the Fetch range.
Definition fetch_track_handler.h:70
SubscribeTrackHandler(const FullTrackName &full_track_name, messages::SubscriberPriority priority, messages::GroupOrder group_order, messages::FilterType filter_type, const std::optional< JoiningFetch > &joining_fetch=std::nullopt, bool publisher_initiated=false)
Subscribe track handler constructor.
Definition subscribe_track_handler.h:71
Definition transport.h:28
Full track name struct.
Definition track_name.h:260