blob: 60150cf7deccbc8f244fb761d234337ecfd50805 [file] [log] [blame] [edit]
// 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.
#include "quiche/quic/moqt/moqt_known_track_publisher.h"
#include <memory>
#include "absl/status/status.h"
#include "absl/status/statusor.h"
#include "quiche/quic/moqt/moqt_messages.h"
#include "quiche/quic/moqt/moqt_publisher.h"
#include "quiche/common/platform/api/quiche_bug_tracker.h"
namespace moqt {
absl::StatusOr<std::shared_ptr<MoqtTrackPublisher>>
MoqtKnownTrackPublisher::GetTrack(const FullTrackName& track_name) {
auto it = tracks_.find(track_name);
if (it == tracks_.end()) {
return absl::NotFoundError("Requested track not found");
}
return it->second;
}
void MoqtKnownTrackPublisher::Add(
std::shared_ptr<MoqtTrackPublisher> track_publisher) {
const FullTrackName& track_name = track_publisher->GetTrackName();
auto [it, success] = tracks_.emplace(track_name, track_publisher);
QUICHE_BUG_IF(MoqtKnownTrackPublisher_duplicate, !success)
<< "Trying to add a duplicate track into a KnownTrackPublisher";
}
void MoqtKnownTrackPublisher::Delete(const FullTrackName& track_name) {
tracks_.erase(track_name);
}
} // namespace moqt