Table of Contents

Class LockFreeObservableCache<TObject, TKey>

Namespace
DynamicData.Cache.Internal
Assembly
DynamicData.dll

An observable cache which exposes an update API. Used at the root of all observable chains.

public sealed class LockFreeObservableCache<TObject, TKey> : IObservableCache<TObject, TKey>, IConnectableCache<TObject, TKey>, IDisposable where TObject : notnull where TKey : notnull

Type Parameters

TObject

The type of the object.

TKey

The type of the key.

Inheritance
LockFreeObservableCache<TObject, TKey>
Implements
IObservableCache<TObject, TKey>
IConnectableCache<TObject, TKey>
Extension Methods
WhenAnyMixin.WhenAny<TSender, TRet, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>(TSender?, Expression<Func<TSender, T1>>, Expression<Func<TSender, T2>>, Expression<Func<TSender, T3>>, Expression<Func<TSender, T4>>, Expression<Func<TSender, T5>>, Expression<Func<TSender, T6>>, Expression<Func<TSender, T7>>, Expression<Func<TSender, T8>>, Expression<Func<TSender, T9>>, Expression<Func<TSender, T10>>, Expression<Func<TSender, T11>>, Expression<Func<TSender, T12>>, Func<IObservedChange<TSender, T1>, IObservedChange<TSender, T2>, IObservedChange<TSender, T3>, IObservedChange<TSender, T4>, IObservedChange<TSender, T5>, IObservedChange<TSender, T6>, IObservedChange<TSender, T7>, IObservedChange<TSender, T8>, IObservedChange<TSender, T9>, IObservedChange<TSender, T10>, IObservedChange<TSender, T11>, IObservedChange<TSender, T12>, TRet>)
WhenAnyMixin.WhenAny<TSender, TRet, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>(TSender?, Expression<Func<TSender, T1>>, Expression<Func<TSender, T2>>, Expression<Func<TSender, T3>>, Expression<Func<TSender, T4>>, Expression<Func<TSender, T5>>, Expression<Func<TSender, T6>>, Expression<Func<TSender, T7>>, Expression<Func<TSender, T8>>, Expression<Func<TSender, T9>>, Expression<Func<TSender, T10>>, Expression<Func<TSender, T11>>, Expression<Func<TSender, T12>>, Func<IObservedChange<TSender, T1>, IObservedChange<TSender, T2>, IObservedChange<TSender, T3>, IObservedChange<TSender, T4>, IObservedChange<TSender, T5>, IObservedChange<TSender, T6>, IObservedChange<TSender, T7>, IObservedChange<TSender, T8>, IObservedChange<TSender, T9>, IObservedChange<TSender, T10>, IObservedChange<TSender, T11>, IObservedChange<TSender, T12>, TRet>)
WhenAnyMixin.WhenAny<TSender, TRet, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>(TSender?, Expression<Func<TSender, T1>>, Expression<Func<TSender, T2>>, Expression<Func<TSender, T3>>, Expression<Func<TSender, T4>>, Expression<Func<TSender, T5>>, Expression<Func<TSender, T6>>, Expression<Func<TSender, T7>>, Expression<Func<TSender, T8>>, Expression<Func<TSender, T9>>, Expression<Func<TSender, T10>>, Expression<Func<TSender, T11>>, Expression<Func<TSender, T12>>, Func<IObservedChange<TSender, T1>, IObservedChange<TSender, T2>, IObservedChange<TSender, T3>, IObservedChange<TSender, T4>, IObservedChange<TSender, T5>, IObservedChange<TSender, T6>, IObservedChange<TSender, T7>, IObservedChange<TSender, T8>, IObservedChange<TSender, T9>, IObservedChange<TSender, T10>, IObservedChange<TSender, T11>, IObservedChange<TSender, T12>, TRet>)
WhenAnyMixin.WhenAny<TSender, TRet, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>(TSender?, Expression<Func<TSender, T1>>, Expression<Func<TSender, T2>>, Expression<Func<TSender, T3>>, Expression<Func<TSender, T4>>, Expression<Func<TSender, T5>>, Expression<Func<TSender, T6>>, Expression<Func<TSender, T7>>, Expression<Func<TSender, T8>>, Expression<Func<TSender, T9>>, Expression<Func<TSender, T10>>, Expression<Func<TSender, T11>>, Expression<Func<TSender, T12>>, Func<IObservedChange<TSender, T1>, IObservedChange<TSender, T2>, IObservedChange<TSender, T3>, IObservedChange<TSender, T4>, IObservedChange<TSender, T5>, IObservedChange<TSender, T6>, IObservedChange<TSender, T7>, IObservedChange<TSender, T8>, IObservedChange<TSender, T9>, IObservedChange<TSender, T10>, IObservedChange<TSender, T11>, IObservedChange<TSender, T12>, TRet>)

Constructors

LockFreeObservableCache()

Initializes a new instance of the LockFreeObservableCache<TObject, TKey> class.

public LockFreeObservableCache()

LockFreeObservableCache(IObservable<IChangeSet<TObject, TKey>>)

Initializes a new instance of the LockFreeObservableCache<TObject, TKey> class.

public LockFreeObservableCache(IObservable<IChangeSet<TObject, TKey>> source)

Parameters

source IObservable<IChangeSet<TObject, TKey>>

The source.

Properties

Count

Gets the total count of cached items.

public int Count { get; }

Property Value

int

CountChanged

Gets a count changed observable starting with the current count.

public IObservable<int> CountChanged { get; }

Property Value

IObservable<int>

Items

Gets the Items.

public IEnumerable<TObject> Items { get; }

Property Value

IEnumerable<TObject>

KeyValues

Gets the key value pairs.

public IEnumerable<KeyValuePair<TKey, TObject>> KeyValues { get; }

Property Value

IEnumerable<KeyValuePair<TKey, TObject>>

Keys

Gets the keys.

public IEnumerable<TKey> Keys { get; }

Property Value

IEnumerable<TKey>

Methods

Connect(Func<TObject, bool>?, bool)

Returns a filtered stream of cache changes preceded with the initial filtered state.

public IObservable<IChangeSet<TObject, TKey>> Connect(Func<TObject, bool>? predicate = null, bool suppressEmptyChangeSets = true)

Parameters

predicate Func<TObject, bool>

The result will be filtered using the specified predicate.

suppressEmptyChangeSets bool

By default, empty change sets are not emitted. Set this value to false to emit empty change sets.

Returns

IObservable<IChangeSet<TObject, TKey>>

An observable that emits the change set.

Dispose()

public void Dispose()

Edit(Action<ICacheUpdater<TObject, TKey>>)

Edits the specified edit action.

public void Edit(Action<ICacheUpdater<TObject, TKey>> editAction)

Parameters

editAction Action<ICacheUpdater<TObject, TKey>>

The edit action.

Lookup(TKey)

Lookup a single item using the specified key.

public Optional<TObject> Lookup(TKey key)

Parameters

key TKey

The key.

Returns

Optional<TObject>

The looked up value.

Remarks

Fast indexed lookup.

Preview(Func<TObject, bool>?)

Returns a filtered stream of cache changes. Unlike Connect(), the returned observable is not prepended with the caches initial items.

public IObservable<IChangeSet<TObject, TKey>> Preview(Func<TObject, bool>? predicate = null)

Parameters

predicate Func<TObject, bool>

The result will be filtered using the specified predicate.

Returns

IObservable<IChangeSet<TObject, TKey>>

An observable that emits the change set.

Watch(TKey)

Returns an observable of any changes which match the specified key. The sequence starts with the initial item in the cache (if there is one).

public IObservable<Change<TObject, TKey>> Watch(TKey key)

Parameters

key TKey

The key.

Returns

IObservable<Change<TObject, TKey>>

An observable that emits the changes.