cesium-native  0.41.0
CesiumAsync::SharedAssetDepot< TAssetType, TAssetKey > Class Template Reference

A depot for SharedAsset instances, which are potentially shared between multiple objects. More...

#include <CesiumAsync/SharedAssetDepot.h>

Inheritance diagram for CesiumAsync::SharedAssetDepot< TAssetType, TAssetKey >:
CesiumUtility::ReferenceCounted< T, isThreadSafe > CesiumUtility::IDepotOwningAsset< TAssetType > CesiumUtility::ThreadIdHolder< true >

Public Types

using FactorySignature = CesiumAsync::Future< CesiumUtility::ResultPointer< TAssetType > >(const AsyncSystem &asyncSystem, const std::shared_ptr< IAssetAccessor > &pAssetAccessor, const TAssetKey &key)
 

Public Member Functions

 SharedAssetDepot (std::function< FactorySignature > factory)
 
SharedFuture< CesiumUtility::ResultPointer< TAssetType > > getOrCreate (const AsyncSystem &asyncSystem, const std::shared_ptr< IAssetAccessor > &pAssetAccessor, const TAssetKey &assetKey)
 Gets an asset from the depot if it already exists, or creates it using the depot's factory if it does not. More...
 
size_t getAssetCount () const
 Returns the total number of distinct assets contained in this depot, including both active and inactive assets.
 
size_t getActiveAssetCount () const
 Gets the number of assets owned by this depot that are active, meaning that they are currently being used in one or more places.
 
size_t getInactiveAssetCount () const
 Gets the number of assets owned by this depot that are inactive, meaning that they are not currently being used.
 
int64_t getInactiveAssetTotalSizeBytes () const
 Gets the total bytes used by inactive (unused) assets owned by this depot.
 
- Public Member Functions inherited from CesiumUtility::ReferenceCounted< T, isThreadSafe >
void addReference () const
 Adds a counted reference to this object. Use CesiumUtility::IntrusivePointer instead of calling this method directly.
 
void releaseReference () const
 Removes a counted reference from this object. When the last reference is removed, this method will delete this instance. Use CesiumUtility::IntrusivePointer instead of calling this method directly.
 
std::int32_t getReferenceCount () const noexcept
 Returns the current reference count of this instance.
 

Public Attributes

int64_t inactiveAssetSizeLimitBytes = 16 * 1024 * 1024
 The maximum total byte usage of assets that have been loaded but are no longer needed. More...
 

Detailed Description

template<typename TAssetType, typename TAssetKey>
class CesiumAsync::SharedAssetDepot< TAssetType, TAssetKey >

A depot for SharedAsset instances, which are potentially shared between multiple objects.

Template Parameters
TAssetTypeThe type of asset stored in this depot. This should be derived from SharedAsset.

Definition at line 33 of file SharedAssetDepot.h.

Member Function Documentation

◆ getOrCreate()

template<typename TAssetType , typename TAssetKey >
SharedFuture<CesiumUtility::ResultPointer<TAssetType> > CesiumAsync::SharedAssetDepot< TAssetType, TAssetKey >::getOrCreate ( const AsyncSystem asyncSystem,
const std::shared_ptr< IAssetAccessor > &  pAssetAccessor,
const TAssetKey &  assetKey 
)
inline

Gets an asset from the depot if it already exists, or creates it using the depot's factory if it does not.

Parameters
asyncSystemThe async system.
pAssetAccessorThe asset accessor to use to download assets, if necessary.
assetKeyThe key uniquely identifying the asset to get or create.
Returns
A shared future that resolves when the asset is ready or fails.

Definition at line 102 of file SharedAssetDepot.h.

Member Data Documentation

◆ inactiveAssetSizeLimitBytes

template<typename TAssetType , typename TAssetKey >
int64_t CesiumAsync::SharedAssetDepot< TAssetType, TAssetKey >::inactiveAssetSizeLimitBytes = 16 * 1024 * 1024

The maximum total byte usage of assets that have been loaded but are no longer needed.

When cached assets are no longer needed, they're marked as candidates for deletion. However, this deletion doesn't actually occur until the total byte usage of deletion candidates exceeds this threshold. At that point, assets are cleaned up in the order that they were marked for deletion until the total dips below this threshold again.

Default is 16MiB.

Definition at line 50 of file SharedAssetDepot.h.


The documentation for this class was generated from the following file: