OpenSim
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Events Macros
Classes | Public Member Functions | Static Public Member Functions | Properties | List of all members
OpenSim.Framework.CnmSynchronizedCache< TKey, TValue > Class Template Reference

Synchronized Cenome cache wrapper. More...

Inheritance diagram for OpenSim.Framework.CnmSynchronizedCache< TKey, TValue >:
Inheritance graph
[legend]
Collaboration diagram for OpenSim.Framework.CnmSynchronizedCache< TKey, TValue >:
Collaboration graph
[legend]

Public Member Functions

void Clear ()
 Removes all elements from the ICnmCache{TKey,TValue}. More...
 
IEnumerator< KeyValuePair
< TKey, TValue > > 
GetEnumerator ()
 Returns an enumerator that iterates through the elements stored to ICnmCache{TKey,TValue}. More...
 
void PurgeExpired ()
 Purge expired elements from the ICnmCache{TKey,TValue}. More...
 
void Remove (TKey key)
 Removes element associated with key from the ICnmCache{TKey,TValue}. More...
 
void RemoveRange (IEnumerable< TKey > keys)
 Removes elements that are associated with one of keys from the ICnmCache{TKey,TValue}. More...
 
bool Set (TKey key, TValue value, long size)
 Add or replace an element with the provided key , value and size to ICnmCache{TKey,TValue}. More...
 
bool TryGetValue (TKey key, out TValue value)
 Gets the value associated with the specified key . More...
 

Static Public Member Functions

static ICnmCache< TKey, TValue > Synchronized (ICnmCache< TKey, TValue > cache)
 Returns a ICnmCache{TKey,TValue} wrapper that is synchronized (thread safe). More...
 

Properties

int Count [get]
 Gets current count of elements stored to ICnmCache{TKey,TValue}. More...
 
TimeSpan ExpirationTime [get, set]
 Gets or sets elements expiration time. More...
 
bool IsCountLimited [get]
 Gets a value indicating whether ICnmCache{TKey,TValue} is limiting count of elements. More...
 
bool IsSizeLimited [get]
 Gets a value indicating whether ICnmCache{TKey,TValue} is limiting size of elements. More...
 
bool IsSynchronized [get]
 Gets a value indicating whether or not access to the ICnmCache{TKey,TValue} is synchronized (thread safe). More...
 
bool IsTimeLimited [get]
 Gets a value indicating whether elements stored to ICnmCache{TKey,TValue} have limited inactivity time. More...
 
int MaxCount [get, set]
 Gets or sets maximal allowed count of elements that can be stored to ICnmCache{TKey,TValue}. More...
 
long MaxElementSize [get]
 
long MaxSize [get, set]
 Gets or sets maximal allowed total size for elements stored to ICnmCache{TKey,TValue}. More...
 
long Size [get]
 Gets total size of elements stored to ICnmCache{TKey,TValue}. More...
 
object SyncRoot [get]
 Gets an object that can be used to synchronize access to the ICnmCache{TKey,TValue}. More...
 
- Properties inherited from OpenSim.Framework.ICnmCache< TKey, TValue >
int Count [get]
 Gets current count of elements stored to ICnmCache{TKey,TValue}. More...
 
TimeSpan ExpirationTime [get, set]
 Gets or sets elements expiration time. More...
 
bool IsSynchronized [get]
 Gets a value indicating whether or not access to the ICnmCache{TKey,TValue} is synchronized (thread safe). More...
 
bool IsCountLimited [get]
 Gets a value indicating whether ICnmCache{TKey,TValue} is limiting count of elements. More...
 
bool IsSizeLimited [get]
 Gets a value indicating whether ICnmCache{TKey,TValue} is limiting size of elements. More...
 
bool IsTimeLimited [get]
 Gets a value indicating whether elements stored to ICnmCache{TKey,TValue} have limited inactivity time. More...
 
int MaxCount [get, set]
 Gets or sets maximal allowed count of elements that can be stored to ICnmCache{TKey,TValue}. More...
 
long MaxElementSize [get]
 
long MaxSize [get, set]
 Gets or sets maximal allowed total size for elements stored to ICnmCache{TKey,TValue}. More...
 
long Size [get]
 Gets total size of elements stored to ICnmCache{TKey,TValue}. More...
 
object SyncRoot [get]
 Gets an object that can be used to synchronize access to the ICnmCache{TKey,TValue}. More...
 

Detailed Description

Synchronized Cenome cache wrapper.

Template Parameters
TKeyThe type of keys in the cache.
TValueThe type of values in the cache.

Enumerator will block other threads, until enumerator's IDisposable.Dispose method is called. "foreach" statement is automatically calling it.

Definition at line 50 of file CnmSynchronizedCache.cs.

Member Function Documentation

void OpenSim.Framework.CnmSynchronizedCache< TKey, TValue >.Clear ( )
inline

Removes all elements from the ICnmCache{TKey,TValue}.

See Also
ICnmCache{TKey,TValue}.Set, ICnmCache{TKey,TValue}.Remove, ICnmCache{TKey,TValue}.RemoveRange, ICnmCache{TKey,TValue}.TryGetValue, ICnmCache{TKey,TValue}.PurgeExpired

Implements OpenSim.Framework.ICnmCache< TKey, TValue >.

Definition at line 555 of file CnmSynchronizedCache.cs.

IEnumerator<KeyValuePair<TKey, TValue> > OpenSim.Framework.CnmSynchronizedCache< TKey, TValue >.GetEnumerator ( )
inline

Returns an enumerator that iterates through the elements stored to ICnmCache{TKey,TValue}.

Returns
A IEnumerator{T} that can be used to iterate through the collection.

<filterpriority>1</filterpriority>

Definition at line 570 of file CnmSynchronizedCache.cs.

void OpenSim.Framework.CnmSynchronizedCache< TKey, TValue >.PurgeExpired ( )
inline

Purge expired elements from the ICnmCache{TKey,TValue}.

Element becomes expired when last access time to it has been longer time than ICnmCache{TKey,TValue}.ExpirationTime.

Depending on ICnmCache{TKey,TValue} implementation, some of expired elements may stay longer than ICnmCache{TKey,TValue}.ExpirationTime in the cache.

See Also
ICnmCache{TKey,TValue}.IsTimeLimited, ICnmCache{TKey,TValue}.ExpirationTime, ICnmCache{TKey,TValue}.Set, ICnmCache{TKey,TValue}.Remove, ICnmCache{TKey,TValue}.RemoveRange, ICnmCache{TKey,TValue}.TryGetValue, ICnmCache{TKey,TValue}.Clear

Implements OpenSim.Framework.ICnmCache< TKey, TValue >.

Definition at line 597 of file CnmSynchronizedCache.cs.

void OpenSim.Framework.CnmSynchronizedCache< TKey, TValue >.Remove ( TKey  key)
inline

Removes element associated with key from the ICnmCache{TKey,TValue}.

Parameters
keyThe key that is associated with element to remove from the ICnmCache{TKey,TValue}.
Exceptions
ArgumentNullExceptionkey is .
See Also
ICnmCache{TKey,TValue}.Set, ICnmCache{TKey,TValue}.RemoveRange, ICnmCache{TKey,TValue}.TryGetValue, ICnmCache{TKey,TValue}.Clear, ICnmCache{TKey,TValue}.PurgeExpired

Implements OpenSim.Framework.ICnmCache< TKey, TValue >.

Definition at line 619 of file CnmSynchronizedCache.cs.

void OpenSim.Framework.CnmSynchronizedCache< TKey, TValue >.RemoveRange ( IEnumerable< TKey >  keys)
inline

Removes elements that are associated with one of keys from the ICnmCache{TKey,TValue}.

Parameters
keysThe keys that are associated with elements to remove from the ICnmCache{TKey,TValue}.
Exceptions
ArgumentNullExceptionkeys is .
See Also
ICnmCache{TKey,TValue}.Set, ICnmCache{TKey,TValue}.Remove, ICnmCache{TKey,TValue}.TryGetValue, ICnmCache{TKey,TValue}.Clear, ICnmCache{TKey,TValue}.PurgeExpired

Implements OpenSim.Framework.ICnmCache< TKey, TValue >.

Definition at line 641 of file CnmSynchronizedCache.cs.

bool OpenSim.Framework.CnmSynchronizedCache< TKey, TValue >.Set ( TKey  key,
TValue  value,
long  size 
)
inline

Add or replace an element with the provided key , value and size to ICnmCache{TKey,TValue}.

Parameters
keyThe object used as the key of the element. Can't be reference.
valueThe object used as the value of the element to add or replace. is allowed.
sizeThe element's size. Normally bytes, but can be any suitable unit of measure.
Returns
if element has been added successfully to the ICnmCache{TKey,TValue}; otherwise .
Exceptions
ArgumentNullExceptionkey is .
ArgumentOutOfRangeExceptionThe element's size is less than 0.

If element's size is larger than ICnmCache{TKey,TValue}.MaxElementSize, then element is not added to the ICnmCache{TKey,TValue}, however - possible older element is removed from the ICnmCache{TKey,TValue}.

When adding an new element to ICnmCache{TKey,TValue} that is limiting total size of elements, ICnmCache{TKey,TValue}will remove less recently used elements until it can fit an new element.

When adding an new element to ICnmCache{TKey,TValue} that is limiting element count, ICnmCache{TKey,TValue}will remove less recently used elements until it can fit an new element.

See Also
ICnmCache{TKey,TValue}.IsSizeLimited, ICnmCache{TKey,TValue}.IsCountLimited, ICnmCache{TKey,TValue}.Remove, ICnmCache{TKey,TValue}.RemoveRange, ICnmCache{TKey,TValue}.TryGetValue, ICnmCache{TKey,TValue}.Clear, ICnmCache{TKey,TValue}.PurgeExpired

Implements OpenSim.Framework.ICnmCache< TKey, TValue >.

Definition at line 694 of file CnmSynchronizedCache.cs.

static ICnmCache<TKey, TValue> OpenSim.Framework.CnmSynchronizedCache< TKey, TValue >.Synchronized ( ICnmCache< TKey, TValue >  cache)
inlinestatic

Returns a ICnmCache{TKey,TValue} wrapper that is synchronized (thread safe).

Parameters
cacheThe ICnmCache{TKey,TValue} to synchronize.
Returns
A ICnmCache{TKey,TValue} wrapper that is synchronized (thread safe).
Exceptions
ArgumentNullExceptioncache is null.

Definition at line 87 of file CnmSynchronizedCache.cs.

bool OpenSim.Framework.CnmSynchronizedCache< TKey, TValue >.TryGetValue ( TKey  key,
out TValue  value 
)
inline

Gets the value associated with the specified key .

Returns
if the ICnmCache{TKey,TValue} contains an element with the specified key; otherwise, .
Parameters
keyThe key whose value to get.
valueWhen this method returns, the value associated with the specified key , if the key is found; otherwise, the default value for the type of the value parameter. This parameter is passed uninitialized.
Exceptions
ArgumentNullExceptionkey is .
See Also
ICnmCache{TKey,TValue}.Set, ICnmCache{TKey,TValue}.Remove, ICnmCache{TKey,TValue}.RemoveRange, ICnmCache{TKey,TValue}.Clear, ICnmCache{TKey,TValue}.PurgeExpired

Implements OpenSim.Framework.ICnmCache< TKey, TValue >.

Definition at line 725 of file CnmSynchronizedCache.cs.

Property Documentation

int OpenSim.Framework.CnmSynchronizedCache< TKey, TValue >.Count
get

Gets current count of elements stored to ICnmCache{TKey,TValue}.

When adding an new element to ICnmCache{TKey,TValue} that is limiting element count, ICnmCache{TKey,TValue} will remove less recently used elements until it can fit an new element.

See Also
ICnmCache{TKey,TValue}.MaxCount, ICnmCache{TKey,TValue}.IsCountLimited, ICnmCache{TKey,TValue}.IsSizeLimited, ICnmCache{TKey,TValue}.IsTimeLimited

Definition at line 226 of file CnmSynchronizedCache.cs.

TimeSpan OpenSim.Framework.CnmSynchronizedCache< TKey, TValue >.ExpirationTime
getset

Gets or sets elements expiration time.

Elements expiration time.

When element has been stored in ICnmCache{TKey,TValue} longer than ICnmCache{TKey,TValue}.ExpirationTime and it is not accessed through ICnmCache{TKey,TValue}.TryGetValue method or element's value is not replaced by ICnmCache{TKey,TValue}.Set method, then it is automatically removed from the ICnmCache{TKey,TValue}.

It is possible that ICnmCache{TKey,TValue} implementation removes element before it's expiration time, because total size or count of elements stored to cache is larger than ICnmCache{TKey,TValue}.MaxSize or ICnmCache{TKey,TValue}.MaxCount.

It is also possible that element stays in cache longer than ICnmCache{TKey,TValue}.ExpirationTime.

Calling ICnmCache{TKey,TValue}.PurgeExpired try to remove all elements that are expired.

To disable time limit in cache, set ICnmCache{TKey,TValue}.ExpirationTime to DateTime.MaxValue.

See Also
ICnmCache{TKey,TValue}.IsTimeLimited, ICnmCache{TKey,TValue}.IsCountLimited, ICnmCache{TKey,TValue}.IsSizeLimited, ICnmCache{TKey,TValue}.PurgeExpired, ICnmCache{TKey,TValue}.Count, ICnmCache{TKey,TValue}.MaxCount, ICnmCache{TKey,TValue}.MaxSize, ICnmCache{TKey,TValue}.Size

Definition at line 272 of file CnmSynchronizedCache.cs.

bool OpenSim.Framework.CnmSynchronizedCache< TKey, TValue >.IsCountLimited
get

Gets a value indicating whether ICnmCache{TKey,TValue} is limiting count of elements.

if the ICnmCache{TKey,TValue} count of elements is limited; otherwise, .

When adding an new element to ICnmCache{TKey,TValue} that is limiting element count, ICnmCache{TKey,TValue} will remove less recently used elements until it can fit an new element.

See Also
ICnmCache{TKey,TValue}.Count, ICnmCache{TKey,TValue}.MaxCount, ICnmCache{TKey,TValue}.IsSizeLimited, ICnmCache{TKey,TValue}.IsTimeLimited

Definition at line 308 of file CnmSynchronizedCache.cs.

bool OpenSim.Framework.CnmSynchronizedCache< TKey, TValue >.IsSizeLimited
get

Gets a value indicating whether ICnmCache{TKey,TValue} is limiting size of elements.

if the ICnmCache{TKey,TValue} total size of elements is limited; otherwise, .

When adding an new element to ICnmCache{TKey,TValue} that is limiting total size of elements, ICnmCache{TKey,TValue} will remove less recently used elements until it can fit an new element.

See Also
ICnmCache{TKey,TValue}.MaxElementSize, ICnmCache{TKey,TValue}.Size, ICnmCache{TKey,TValue}.MaxSize, ICnmCache{TKey,TValue}.IsCountLimited, ICnmCache{TKey,TValue}.IsTimeLimited

Definition at line 337 of file CnmSynchronizedCache.cs.

bool OpenSim.Framework.CnmSynchronizedCache< TKey, TValue >.IsSynchronized
get

Gets a value indicating whether or not access to the ICnmCache{TKey,TValue} is synchronized (thread safe).

if access to the ICnmCache{TKey,TValue} is synchronized (thread safe); otherwise, .

To get synchronized (thread safe) access to ICnmCache{TKey,TValue} object, use CnmSynchronizedCache{TKey,TValue}.Synchronized in CnmSynchronizedCache{TKey,TValue} class to retrieve synchronized wrapper for ICnmCache{TKey,TValue} object.

See Also
ICnmCache{TKey,TValue}.SyncRoot, CnmSynchronizedCache{TKey,TValue}

Definition at line 364 of file CnmSynchronizedCache.cs.

bool OpenSim.Framework.CnmSynchronizedCache< TKey, TValue >.IsTimeLimited
get

Gets a value indicating whether elements stored to ICnmCache{TKey,TValue} have limited inactivity time.

if the ICnmCache{TKey,TValue} has a fixed total size of elements; otherwise, .

If ICnmCache{TKey,TValue} have limited inactivity time and element is not accessed through ICnmCache{TKey,TValue}.Set or ICnmCache{TKey,TValue}.TryGetValue methods in ICnmCache{TKey,TValue}.ExpirationTime , then element is automatically removed from the cache. Depending on implementation of the ICnmCache{TKey,TValue}, some of the elements may stay longer in cache.

See Also
ICnmCache{TKey,TValue}.ExpirationTime, ICnmCache{TKey,TValue}.PurgeExpired, ICnmCache{TKey,TValue}.IsCountLimited, ICnmCache{TKey,TValue}.IsSizeLimited

Definition at line 386 of file CnmSynchronizedCache.cs.

int OpenSim.Framework.CnmSynchronizedCache< TKey, TValue >.MaxCount
getset

Gets or sets maximal allowed count of elements that can be stored to ICnmCache{TKey,TValue}.

int.MaxValue, if ICnmCache{TKey,TValue} is not limited by count of elements; otherwise maximal allowed count of elements.

When adding an new element to ICnmCache{TKey,TValue} that is limiting element count, ICnmCache{TKey,TValue} will remove less recently used elements until it can fit an new element.

Definition at line 410 of file CnmSynchronizedCache.cs.

long OpenSim.Framework.CnmSynchronizedCache< TKey, TValue >.MaxElementSize
get

Gets maximal allowed element size.

Maximal allowed element size.

If element's size is larger than ICnmCache{TKey,TValue}.MaxElementSize, then element is not added to the ICnmCache{TKey,TValue}.

See Also
ICnmCache{TKey,TValue}.Set, ICnmCache{TKey,TValue}.IsSizeLimited, ICnmCache{TKey,TValue}.Size, ICnmCache{TKey,TValue}.MaxSize

Definition at line 445 of file CnmSynchronizedCache.cs.

long OpenSim.Framework.CnmSynchronizedCache< TKey, TValue >.MaxSize
getset

Gets or sets maximal allowed total size for elements stored to ICnmCache{TKey,TValue}.

Maximal allowed total size for elements stored to ICnmCache{TKey,TValue}.

Normally size is total bytes used by elements in the cache. But it can be any other suitable unit of measure.

When adding an new element to ICnmCache{TKey,TValue} that is limiting total size of elements, ICnmCache{TKey,TValue} will remove less recently used elements until it can fit an new element.

Exceptions
ArgumentOutOfRangeExceptionvalue is less than 0.
See Also
ICnmCache{TKey,TValue}.MaxElementSize, ICnmCache{TKey,TValue}.IsSizeLimited, ICnmCache{TKey,TValue}.Size

Definition at line 475 of file CnmSynchronizedCache.cs.

long OpenSim.Framework.CnmSynchronizedCache< TKey, TValue >.Size
get

Gets total size of elements stored to ICnmCache{TKey,TValue}.

Total size of elements stored to ICnmCache{TKey,TValue}.

Normally bytes, but can be any suitable unit of measure.

Element's size is given when element is added or replaced by ICnmCache{TKey,TValue}.Set method.

When adding an new element to ICnmCache{TKey,TValue} that is limiting total size of elements, ICnmCache{TKey,TValue} will remove less recently used elements until it can fit an new element.

See Also
ICnmCache{TKey,TValue}.MaxElementSize, ICnmCache{TKey,TValue}.IsSizeLimited, ICnmCache{TKey,TValue}.MaxSize, ICnmCache{TKey,TValue}.IsCountLimited, ICnmCache{TKey,TValue}.ExpirationTime

Definition at line 517 of file CnmSynchronizedCache.cs.

object OpenSim.Framework.CnmSynchronizedCache< TKey, TValue >.SyncRoot
get

Gets an object that can be used to synchronize access to the ICnmCache{TKey,TValue}.

An object that can be used to synchronize access to the ICnmCache{TKey,TValue}.

To get synchronized (thread safe) access to ICnmCache{TKey,TValue}, use CnmSynchronizedCache{TKey,TValue} method CnmSynchronizedCache{TKey,TValue}.Synchronized to retrieve synchronized wrapper interface to ICnmCache{TKey,TValue}.

See Also
ICnmCache{TKey,TValue}.IsSynchronized, CnmSynchronizedCache{TKey,TValue}

Definition at line 543 of file CnmSynchronizedCache.cs.


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