AsyncResourceCacheInterface Class Reference

#include <asyncresourcecache.h>

Inheritance diagram for AsyncResourceCacheInterface:

Detailed Description

Cache class to allow delayed load of data with notification when it's ready to display. Multiple requests are combined (the first request loads the data and notifies all others)

Public Types

using LoadCacheDelegate = Delegate< Result< DataRef >(const KeyData &key)>
 

Public Member Functions

 MAXON_ADD_TO_REFERENCE_CLASS (using Entry=AsyncResourceCacheEntryRef< KEYTYPE, TYPE >;)
 
template<typename KEYTYPE >
MAXON_FUNCTION Result< void > InvalidateCache (const KEYTYPE &key)
 
MAXON_METHOD Result< void > InvalidateCacheImpl (const KeyData &key)
 
template<typename KEYTYPE , typename TYPE >
MAXON_FUNCTION Result< AsyncResourceCacheEntryRef< KEYTYPE, TYPE > > FindOrCreate (const KEYTYPE &key)
 
MAXON_METHOD Result< AsyncResourceCacheEntryRef< KEYTYPE, TYPE > > FindOrCreateImpl (const KeyData &key)
 
MAXON_METHOD void Reset ()
 
MAXON_METHOD Result< void > GetStatistics (Int &cnt, Int &mem)
 

Static Public Member Functions

template<typename KEYTYPE , typename TYPE >
static MAXON_FUNCTION Result< AsyncResourceCacheRef< KEYTYPE, TYPE > > Create (ASYNCRESOURCECACHEFLAGS flags, Int queueSize, Int cacheLimit, Delegate< Result< TYPE >(const KEYTYPE &key)> &&loadDelegate)
 
static MAXON_METHOD Result< AsyncResourceCacheRef<> > CreateImpl (ASYNCRESOURCECACHEFLAGS flags, Data &&defaultValue, Int queueSize, Int cacheLimit, LoadCacheDelegate &&loadDelegate)
 

Private Member Functions

 MAXON_INTERFACE (AsyncResourceCacheInterface, MAXON_REFERENCE_NORMAL, "net.maxon.interface.asyncresourcecache")
 
 MAXON_GENERIC (typename KEYTYPE=KeyData)
 
 MAXON_GENERIC ((Out) typename TYPE=DataRef)
 

Member Typedef Documentation

◆ LoadCacheDelegate

Member Function Documentation

◆ MAXON_INTERFACE()

MAXON_INTERFACE ( AsyncResourceCacheInterface  ,
MAXON_REFERENCE_NORMAL  ,
"net.maxon.interface.asyncresourcecache"   
)
private

◆ MAXON_GENERIC() [1/2]

MAXON_GENERIC ( typename KEYTYPE  = KeyData)
private

◆ MAXON_GENERIC() [2/2]

MAXON_GENERIC ( (Out) typename  TYPE = DataRef)
private

◆ MAXON_ADD_TO_REFERENCE_CLASS()

MAXON_ADD_TO_REFERENCE_CLASS ( using  Entry = AsyncResourceCacheEntryRef< KEYTYPE, TYPE >;)

◆ Create()

static MAXON_FUNCTION Result<AsyncResourceCacheRef<KEYTYPE, TYPE> > Create ( ASYNCRESOURCECACHEFLAGS  flags,
Int  queueSize,
Int  cacheLimit,
Delegate< Result< TYPE >(const KEYTYPE &key)> &&  loadDelegate 
)
static

◆ CreateImpl()

static MAXON_METHOD Result<AsyncResourceCacheRef<> > CreateImpl ( ASYNCRESOURCECACHEFLAGS  flags,
Data &&  defaultValue,
Int  queueSize,
Int  cacheLimit,
LoadCacheDelegate &&  loadDelegate 
)
static

◆ InvalidateCache()

MAXON_FUNCTION Result<void> InvalidateCache ( const KEYTYPE &  key)

InvalidateCache invalidates and removed the data from the cache. The next request will reload the data.

Parameters
[in]keyData to discard from the cache.
Returns
OK on success.

◆ InvalidateCacheImpl()

MAXON_METHOD Result<void> InvalidateCacheImpl ( const KeyData key)

◆ FindOrCreate()

MAXON_FUNCTION Result<AsyncResourceCacheEntryRef<KEYTYPE, TYPE> > FindOrCreate ( const KEYTYPE &  key)

FindOrCreate returns the cache for the requested data resource.

Parameters
[in]keyKey of the data to load.
Returns
Cache on success.

◆ FindOrCreateImpl()

MAXON_METHOD Result<AsyncResourceCacheEntryRef<KEYTYPE, TYPE> > FindOrCreateImpl ( const KeyData key)

◆ Reset()

MAXON_METHOD void Reset ( )

Resets all caches.

◆ GetStatistics()

MAXON_METHOD Result<void> GetStatistics ( Int cnt,
Int mem 
)

Returns the current cache usage by type, count etc.

Parameters
[out]cntthe number of entries of the cache,
[out]memmemory usage by this entry.
Returns
OK on success.