| // 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_CACHED_OBJECT_H_ | 
 | #define QUICHE_QUIC_MOQT_MOQT_CACHED_OBJECT_H_ | 
 |  | 
 | #include <memory> | 
 |  | 
 | #include "quiche/quic/core/quic_time.h" | 
 | #include "quiche/quic/moqt/moqt_messages.h" | 
 | #include "quiche/quic/moqt/moqt_priority.h" | 
 | #include "quiche/quic/moqt/moqt_publisher.h" | 
 | #include "quiche/common/quiche_mem_slice.h" | 
 |  | 
 | namespace moqt { | 
 |  | 
 | // CachedObject is a version of PublishedObject with a reference counted | 
 | // payload. | 
 | struct CachedObject { | 
 |   Location sequence; | 
 |   MoqtObjectStatus status; | 
 |   MoqtPriority publisher_priority; | 
 |   std::shared_ptr<quiche::QuicheMemSlice> payload; | 
 |   quic::QuicTime arrival_time; | 
 |   bool fin_after_this;  // This is the last object before FIN. | 
 | }; | 
 |  | 
 | // Transforms a CachedObject into a PublishedObject. | 
 | PublishedObject CachedObjectToPublishedObject(const CachedObject& object); | 
 |  | 
 | }  // namespace moqt | 
 |  | 
 | #endif  // QUICHE_QUIC_MOQT_MOQT_CACHED_OBJECT_H_ |