| // Copyright 2024 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef QUICHE_QUIC_MOQT_MOQT_KNOWN_TRACK_PUBLISHER_H_ |
| #define QUICHE_QUIC_MOQT_MOQT_KNOWN_TRACK_PUBLISHER_H_ |
| |
| #include <memory> |
| |
| #include "absl/container/flat_hash_map.h" |
| #include "absl/status/statusor.h" |
| #include "quiche/quic/moqt/moqt_messages.h" |
| #include "quiche/quic/moqt/moqt_publisher.h" |
| |
| namespace moqt { |
| |
| // MoqtKnownTrackPublisher is a publisher that supports publishing a set of |
| // well-known predefined tracks. |
| class MoqtKnownTrackPublisher : public MoqtPublisher { |
| public: |
| MoqtKnownTrackPublisher() = default; |
| MoqtKnownTrackPublisher(const MoqtKnownTrackPublisher&) = delete; |
| MoqtKnownTrackPublisher(MoqtKnownTrackPublisher&&) = delete; |
| MoqtKnownTrackPublisher& operator=(const MoqtKnownTrackPublisher&) = delete; |
| MoqtKnownTrackPublisher& operator=(MoqtKnownTrackPublisher&&) = delete; |
| |
| absl::StatusOr<std::shared_ptr<MoqtTrackPublisher>> GetTrack( |
| const FullTrackName& track_name) override; |
| void Add(std::shared_ptr<MoqtTrackPublisher> track_publisher); |
| void Delete(const FullTrackName& track_name); |
| |
| private: |
| absl::flat_hash_map<FullTrackName, std::shared_ptr<MoqtTrackPublisher>> |
| tracks_; |
| }; |
| |
| } // namespace moqt |
| |
| #endif // QUICHE_QUIC_MOQT_MOQT_KNOWN_TRACK_PUBLISHER_H_ |