Table of Contents

Class EventStreamExtensions

Namespace
LfrlAnvil.Reactive.Extensions
Assembly
LfrlAnvil.Reactive.Core.dll

Contains IEventStream<TEvent> extension methods.

public static class EventStreamExtensions
Inheritance
EventStreamExtensions
Inherited Members

Methods

Aggregate<TEvent>(IEventStream<TEvent>, Func<TEvent, TEvent, TEvent>)

Decorates the event stream with EventListenerAggregateDecorator<TEvent>.

[Pure]
public static IEventStream<TEvent> Aggregate<TEvent>(this IEventStream<TEvent> source, Func<TEvent, TEvent, TEvent> func)

Parameters

source IEventStream<TEvent>

Source event stream.

func Func<TEvent, TEvent, TEvent>

Aggregator delegate.

Returns

IEventStream<TEvent>

Decorated IEventStream<TEvent> instance.

Type Parameters

TEvent

Event type.

Aggregate<TEvent>(IEventStream<TEvent>, Func<TEvent, TEvent, TEvent>, TEvent)

Decorates the event stream with EventListenerAggregateDecorator<TEvent> with an initial event to publish immediately.

[Pure]
public static IEventStream<TEvent> Aggregate<TEvent>(this IEventStream<TEvent> source, Func<TEvent, TEvent, TEvent> func, TEvent seed)

Parameters

source IEventStream<TEvent>

Source event stream.

func Func<TEvent, TEvent, TEvent>

Aggregator delegate.

seed TEvent

Initial event to publish immediately.

Returns

IEventStream<TEvent>

Decorated IEventStream<TEvent> instance.

Type Parameters

TEvent

Event type.

Append<TEvent>(IEventStream<TEvent>, IEnumerable<TEvent>)

Decorates the event stream with EventListenerAppendDecorator<TEvent>.

[Pure]
public static IEventStream<TEvent> Append<TEvent>(this IEventStream<TEvent> source, IEnumerable<TEvent> values)

Parameters

source IEventStream<TEvent>

Source event stream.

values IEnumerable<TEvent>

Collection of values to append.

Returns

IEventStream<TEvent>

Decorated IEventStream<TEvent> instance.

Type Parameters

TEvent

Event type.

Append<TEvent>(IEventStream<TEvent>, params TEvent[])

Decorates the event stream with EventListenerAppendDecorator<TEvent>.

[Pure]
public static IEventStream<TEvent> Append<TEvent>(this IEventStream<TEvent> source, params TEvent[] values)

Parameters

source IEventStream<TEvent>

Source event stream.

values TEvent[]

Collection of values to append.

Returns

IEventStream<TEvent>

Decorated IEventStream<TEvent> instance.

Type Parameters

TEvent

Event type.

AuditUntil<TEvent, TTargetEvent>(IEventStream<TEvent>, IEventStream<TTargetEvent>)

[Pure]
public static IEventStream<TEvent> AuditUntil<TEvent, TTargetEvent>(this IEventStream<TEvent> source, IEventStream<TTargetEvent> target)

Parameters

source IEventStream<TEvent>

Source event stream.

target IEventStream<TTargetEvent>

Target event stream to wait for before emitting the last emitted event.

Returns

IEventStream<TEvent>

Decorated IEventStream<TEvent> instance.

Type Parameters

TEvent

Event type.

TTargetEvent

Target event type.

BufferUntil<TEvent, TTargetEvent>(IEventStream<TEvent>, IEventStream<TTargetEvent>)

[Pure]
public static IEventStream<ReadOnlyMemory<TEvent>> BufferUntil<TEvent, TTargetEvent>(this IEventStream<TEvent> source, IEventStream<TTargetEvent> target)

Parameters

source IEventStream<TEvent>

Source event stream.

target IEventStream<TTargetEvent>

Target event stream to wait for before emitting the underlying buffer.

Returns

IEventStream<ReadOnlyMemory<TEvent>>

Decorated IEventStream<TEvent> instance.

Type Parameters

TEvent

Event type.

TTargetEvent

Target event type.

Buffer<TEvent>(IEventStream<TEvent>, int)

Decorates the event stream with EventListenerBufferDecorator<TEvent>.

[Pure]
public static IEventStream<ReadOnlyMemory<TEvent>> Buffer<TEvent>(this IEventStream<TEvent> source, int bufferLength)

Parameters

source IEventStream<TEvent>

Source event stream.

bufferLength int

Size of the underlying buffer.

Returns

IEventStream<ReadOnlyMemory<TEvent>>

Decorated IEventStream<TEvent> instance.

Type Parameters

TEvent

Event type.

Exceptions

ArgumentOutOfRangeException

When bufferLength is less than 1.

Catch<TEvent, TException>(IEventStream<TEvent>, Action<TException>)

Decorates the event stream with EventListenerCatchDecorator<TEvent, TException>.

[Pure]
public static IEventStream<TEvent> Catch<TEvent, TException>(this IEventStream<TEvent> source, Action<TException> onError) where TException : Exception

Parameters

source IEventStream<TEvent>

Source event stream.

onError Action<TException>

Delegate to invoke once an exception is thrown by the decorated event listener.

Returns

IEventStream<TEvent>

Decorated IEventStream<TEvent> instance.

Type Parameters

TEvent

Event type.

TException

Exception type.

ConcatAll<TEvent>(IEventStream<IEventStream<TEvent>>)

Decorates the event stream with EventListenerMergeAllDecorator<TEvent> with maximum number of concurrently active inner event streams equal to 1.

[Pure]
public static IEventStream<TEvent> ConcatAll<TEvent>(this IEventStream<IEventStream<TEvent>> source)

Parameters

source IEventStream<IEventStream<TEvent>>

Source event stream.

Returns

IEventStream<TEvent>

Decorated IEventStream<TEvent> instance.

Type Parameters

TEvent

Event type.

ConcurrentAll<TEvent>(IEventStream<IEventStream<TEvent>>)

Decorates the event stream with EventListenerConcurrentAllDecorator<TEvent>.

[Pure]
public static IEventStream<IEventStream<TEvent>> ConcurrentAll<TEvent>(this IEventStream<IEventStream<TEvent>> source)

Parameters

source IEventStream<IEventStream<TEvent>>

Source event stream.

Returns

IEventStream<IEventStream<TEvent>>

Decorated IEventStream<TEvent> instance.

Type Parameters

TEvent

Event type.

ConcurrentAll<TEvent>(IEventStream<IEventStream<TEvent>>, object)

Decorates the event stream with EventListenerConcurrentAllDecorator<TEvent>.

[Pure]
public static IEventStream<IEventStream<TEvent>> ConcurrentAll<TEvent>(this IEventStream<IEventStream<TEvent>> source, object sync)

Parameters

source IEventStream<IEventStream<TEvent>>

Source event stream.

sync object

Shared synchronization object.

Returns

IEventStream<IEventStream<TEvent>>

Decorated IEventStream<TEvent> instance.

Type Parameters

TEvent

Event type.

Concurrent<TEvent>(IEventStream<TEvent>)

Decorates the event stream with EventListenerConcurrentDecorator<TEvent>.

[Pure]
public static IEventStream<TEvent> Concurrent<TEvent>(this IEventStream<TEvent> source)

Parameters

source IEventStream<TEvent>

Source event stream.

Returns

IEventStream<TEvent>

Decorated IEventStream<TEvent> instance.

Type Parameters

TEvent

Event type.

Concurrent<TEvent>(IEventStream<TEvent>, object)

Decorates the event stream with EventListenerConcurrentDecorator<TEvent>.

[Pure]
public static IEventStream<TEvent> Concurrent<TEvent>(this IEventStream<TEvent> source, object sync)

Parameters

source IEventStream<TEvent>

Source event stream.

sync object

Synchronization object.

Returns

IEventStream<TEvent>

Decorated IEventStream<TEvent> instance.

Type Parameters

TEvent

Event type.

ContinueWith<TEvent, TNextEvent>(IEventStream<TEvent>, Func<TEvent, IEventStream<TNextEvent>>)

[Pure]
public static IEventStream<TNextEvent> ContinueWith<TEvent, TNextEvent>(this IEventStream<TEvent> source, Func<TEvent, IEventStream<TNextEvent>> continuationFactory)

Parameters

source IEventStream<TEvent>

Source event stream.

continuationFactory Func<TEvent, IEventStream<TNextEvent>>

Delegate that creates the continuation event stream based on the last emitted event.

Returns

IEventStream<TNextEvent>

Decorated IEventStream<TEvent> instance.

Type Parameters

TEvent

Event type.

TNextEvent

Next event type.

DebounceUntil<TEvent, TTargetEvent>(IEventStream<TEvent>, IEventStream<TTargetEvent>)

[Pure]
public static IEventStream<TEvent> DebounceUntil<TEvent, TTargetEvent>(this IEventStream<TEvent> source, IEventStream<TTargetEvent> target)

Parameters

source IEventStream<TEvent>

Source event stream.

target IEventStream<TTargetEvent>

Target event stream to wait for before emitting the stored event.

Returns

IEventStream<TEvent>

Decorated IEventStream<TEvent> instance.

Type Parameters

TEvent

Event type.

TTargetEvent

Target event type.

DefaultIfEmpty<TEvent>(IEventStream<TEvent>)

Decorates the event stream with EventListenerDefaultIfEmptyDecorator<TEvent>.

[Pure]
public static IEventStream<TEvent?> DefaultIfEmpty<TEvent>(this IEventStream<TEvent> source)

Parameters

source IEventStream<TEvent>

Source event stream.

Returns

IEventStream<TEvent>

Decorated IEventStream<TEvent> instance.

Type Parameters

TEvent

Event type.

DefaultIfEmpty<TEvent>(IEventStream<TEvent>, TEvent)

Decorates the event stream with EventListenerDefaultIfEmptyDecorator<TEvent> with a custom default value.

[Pure]
public static IEventStream<TEvent> DefaultIfEmpty<TEvent>(this IEventStream<TEvent> source, TEvent defaultValue)

Parameters

source IEventStream<TEvent>

Source event stream.

defaultValue TEvent

Default value.

Returns

IEventStream<TEvent>

Decorated IEventStream<TEvent> instance.

Type Parameters

TEvent

Event type.

DistinctByUntilChanged<TEvent, TKey>(IEventStream<TEvent>, Func<TEvent, TKey>)

Decorates the event stream with EventListenerDistinctUntilChangedDecorator<TEvent, TKey> with Default key equality comparer.

[Pure]
public static IEventStream<TEvent> DistinctByUntilChanged<TEvent, TKey>(this IEventStream<TEvent> source, Func<TEvent, TKey> keySelector)

Parameters

source IEventStream<TEvent>

Source event stream.

keySelector Func<TEvent, TKey>

Event key selector.

Returns

IEventStream<TEvent>

Decorated IEventStream<TEvent> instance.

Type Parameters

TEvent

Event type.

TKey

Event's key type.

DistinctByUntilChanged<TEvent, TKey>(IEventStream<TEvent>, Func<TEvent, TKey>, IEqualityComparer<TKey>)

[Pure]
public static IEventStream<TEvent> DistinctByUntilChanged<TEvent, TKey>(this IEventStream<TEvent> source, Func<TEvent, TKey> keySelector, IEqualityComparer<TKey> equalityComparer)

Parameters

source IEventStream<TEvent>

Source event stream.

keySelector Func<TEvent, TKey>

Event key selector.

equalityComparer IEqualityComparer<TKey>

Key equality comparer.

Returns

IEventStream<TEvent>

Decorated IEventStream<TEvent> instance.

Type Parameters

TEvent

Event type.

TKey

Event's key type.

DistinctByUntil<TEvent, TKey, TTargetEvent>(IEventStream<TEvent>, Func<TEvent, TKey>, IEventStream<TTargetEvent>)

Decorates the event stream with EventListenerDistinctUntilDecorator<TEvent, TKey, TTargetEvent> with Default key equality comparer.

[Pure]
public static IEventStream<TEvent> DistinctByUntil<TEvent, TKey, TTargetEvent>(this IEventStream<TEvent> source, Func<TEvent, TKey> keySelector, IEventStream<TTargetEvent> target)

Parameters

source IEventStream<TEvent>

Source event stream.

keySelector Func<TEvent, TKey>

Event key selector.

target IEventStream<TTargetEvent>

Target event stream whose events cause the underlying distinct keys tracker to be reset.

Returns

IEventStream<TEvent>

Decorated IEventStream<TEvent> instance.

Type Parameters

TEvent

Event type.

TKey

Event's key type.

TTargetEvent

Target event type.

DistinctByUntil<TEvent, TKey, TTargetEvent>(IEventStream<TEvent>, Func<TEvent, TKey>, IEqualityComparer<TKey>, IEventStream<TTargetEvent>)

[Pure]
public static IEventStream<TEvent> DistinctByUntil<TEvent, TKey, TTargetEvent>(this IEventStream<TEvent> source, Func<TEvent, TKey> keySelector, IEqualityComparer<TKey> equalityComparer, IEventStream<TTargetEvent> target)

Parameters

source IEventStream<TEvent>

Source event stream.

keySelector Func<TEvent, TKey>

Event key selector.

equalityComparer IEqualityComparer<TKey>

Key equality comparer.

target IEventStream<TTargetEvent>

Target event stream whose events cause the underlying distinct keys tracker to be reset.

Returns

IEventStream<TEvent>

Decorated IEventStream<TEvent> instance.

Type Parameters

TEvent

Event type.

TKey

Event's key type.

TTargetEvent

Target event type.

DistinctBy<TEvent, TKey>(IEventStream<TEvent>, Func<TEvent, TKey>)

Decorates the event stream with EventListenerDistinctDecorator<TEvent, TKey> with Default key equality comparer.

[Pure]
public static IEventStream<TEvent> DistinctBy<TEvent, TKey>(this IEventStream<TEvent> source, Func<TEvent, TKey> keySelector)

Parameters

source IEventStream<TEvent>

Source event stream.

keySelector Func<TEvent, TKey>

Event key selector.

Returns

IEventStream<TEvent>

Decorated IEventStream<TEvent> instance.

Type Parameters

TEvent

Event type.

TKey

Event's key type.

DistinctBy<TEvent, TKey>(IEventStream<TEvent>, Func<TEvent, TKey>, IEqualityComparer<TKey>)

Decorates the event stream with EventListenerDistinctDecorator<TEvent, TKey>.

[Pure]
public static IEventStream<TEvent> DistinctBy<TEvent, TKey>(this IEventStream<TEvent> source, Func<TEvent, TKey> keySelector, IEqualityComparer<TKey> equalityComparer)

Parameters

source IEventStream<TEvent>

Source event stream.

keySelector Func<TEvent, TKey>

Event key selector.

equalityComparer IEqualityComparer<TKey>

Key equality comparer.

Returns

IEventStream<TEvent>

Decorated IEventStream<TEvent> instance.

Type Parameters

TEvent

Event type.

TKey

Event's key type.

DistinctUntilChanged<TEvent>(IEventStream<TEvent>)

Decorates the event stream with EventListenerDistinctUntilChangedDecorator<TEvent, TKey> where event is the key, with Default event equality comparer.

[Pure]
public static IEventStream<TEvent> DistinctUntilChanged<TEvent>(this IEventStream<TEvent> source)

Parameters

source IEventStream<TEvent>

Source event stream.

Returns

IEventStream<TEvent>

Decorated IEventStream<TEvent> instance.

Type Parameters

TEvent

Event type.

DistinctUntilChanged<TEvent>(IEventStream<TEvent>, IEqualityComparer<TEvent>)

Decorates the event stream with EventListenerDistinctUntilChangedDecorator<TEvent, TKey> where event is the key.

[Pure]
public static IEventStream<TEvent> DistinctUntilChanged<TEvent>(this IEventStream<TEvent> source, IEqualityComparer<TEvent> equalityComparer)

Parameters

source IEventStream<TEvent>

Source event stream.

equalityComparer IEqualityComparer<TEvent>

Key equality comparer.

Returns

IEventStream<TEvent>

Decorated IEventStream<TEvent> instance.

Type Parameters

TEvent

Event type.

DistinctUntil<TEvent, TTargetEvent>(IEventStream<TEvent>, IEventStream<TTargetEvent>)

Decorates the event stream with EventListenerDistinctUntilDecorator<TEvent, TKey, TTargetEvent> where event is the key, with Default key equality comparer.

[Pure]
public static IEventStream<TEvent> DistinctUntil<TEvent, TTargetEvent>(this IEventStream<TEvent> source, IEventStream<TTargetEvent> target)

Parameters

source IEventStream<TEvent>

Source event stream.

target IEventStream<TTargetEvent>

Target event stream whose events cause the underlying distinct keys tracker to be reset.

Returns

IEventStream<TEvent>

Decorated IEventStream<TEvent> instance.

Type Parameters

TEvent

Event type.

TTargetEvent

Target event type.

DistinctUntil<TEvent, TTargetEvent>(IEventStream<TEvent>, IEqualityComparer<TEvent>, IEventStream<TTargetEvent>)

Decorates the event stream with EventListenerDistinctUntilDecorator<TEvent, TKey, TTargetEvent> where event is the key.

[Pure]
public static IEventStream<TEvent> DistinctUntil<TEvent, TTargetEvent>(this IEventStream<TEvent> source, IEqualityComparer<TEvent> equalityComparer, IEventStream<TTargetEvent> target)

Parameters

source IEventStream<TEvent>

Source event stream.

equalityComparer IEqualityComparer<TEvent>

Key equality comparer.

target IEventStream<TTargetEvent>

Target event stream whose events cause the underlying distinct keys tracker to be reset.

Returns

IEventStream<TEvent>

Decorated IEventStream<TEvent> instance.

Type Parameters

TEvent

Event type.

TTargetEvent

Target event type.

Distinct<TEvent>(IEventStream<TEvent>)

Decorates the event stream with EventListenerDistinctDecorator<TEvent, TKey> where event is the key, with Default event equality comparer.

[Pure]
public static IEventStream<TEvent> Distinct<TEvent>(this IEventStream<TEvent> source)

Parameters

source IEventStream<TEvent>

Source event stream.

Returns

IEventStream<TEvent>

Decorated IEventStream<TEvent> instance.

Type Parameters

TEvent

Event type.

Distinct<TEvent>(IEventStream<TEvent>, IEqualityComparer<TEvent>)

Decorates the event stream with EventListenerDistinctDecorator<TEvent, TKey> where event is the key.

[Pure]
public static IEventStream<TEvent> Distinct<TEvent>(this IEventStream<TEvent> source, IEqualityComparer<TEvent> equalityComparer)

Parameters

source IEventStream<TEvent>

Source event stream.

equalityComparer IEqualityComparer<TEvent>

Key equality comparer.

Returns

IEventStream<TEvent>

Decorated IEventStream<TEvent> instance.

Type Parameters

TEvent

Event type.

ElementAt<TEvent>(IEventStream<TEvent>, int)

Decorates the event stream with EventListenerElementAtDecorator<TEvent>.

[Pure]
public static IEventStream<TEvent> ElementAt<TEvent>(this IEventStream<TEvent> source, int index)

Parameters

source IEventStream<TEvent>

Source event stream.

index int

0-based position of the desired event.

Returns

IEventStream<TEvent>

Decorated IEventStream<TEvent> instance.

Type Parameters

TEvent

Event type.

ExhaustAll<TEvent>(IEventStream<IEventStream<TEvent>>)

Decorates the event stream with EventListenerExhaustAllDecorator<TEvent>.

[Pure]
public static IEventStream<TEvent> ExhaustAll<TEvent>(this IEventStream<IEventStream<TEvent>> source)

Parameters

source IEventStream<IEventStream<TEvent>>

Source event stream.

Returns

IEventStream<TEvent>

Decorated IEventStream<TEvent> instance.

Type Parameters

TEvent

Event type.

First<TEvent>(IEventStream<TEvent>)

Decorates the event stream with EventListenerFirstDecorator<TEvent>.

[Pure]
public static IEventStream<TEvent> First<TEvent>(this IEventStream<TEvent> source)

Parameters

source IEventStream<TEvent>

Source event stream.

Returns

IEventStream<TEvent>

Decorated IEventStream<TEvent> instance.

Type Parameters

TEvent

Event type.

Flatten<TEvent>(IEventStream<IEnumerable<TEvent>>)

Decorates the event stream with EventListenerSelectManyDecorator<TSourceEvent, TNextEvent> that emits all nested elements.

[Pure]
public static IEventStream<TEvent> Flatten<TEvent>(this IEventStream<IEnumerable<TEvent>> source)

Parameters

source IEventStream<IEnumerable<TEvent>>

Source event stream.

Returns

IEventStream<TEvent>

Decorated IEventStream<TEvent> instance.

Type Parameters

TEvent

Event type.

Flatten<TSourceEvent, TInnerEvent>(IEventStream<TSourceEvent>, Func<TSourceEvent, IEnumerable<TInnerEvent>>)

Decorates the event stream with EventListenerSelectManyDecorator<TSourceEvent, TNextEvent> that emits pairs of (source, inner) events.

[Pure]
public static IEventStream<Pair<TSourceEvent, TInnerEvent>> Flatten<TSourceEvent, TInnerEvent>(this IEventStream<TSourceEvent> source, Func<TSourceEvent, IEnumerable<TInnerEvent>> selector)

Parameters

source IEventStream<TSourceEvent>

Source event stream.

selector Func<TSourceEvent, IEnumerable<TInnerEvent>>

Inner event collection selector.

Returns

IEventStream<Pair<TSourceEvent, TInnerEvent>>

Decorated IEventStream<TEvent> instance.

Type Parameters

TSourceEvent

Source event type.

TInnerEvent

Inner event type.

Flatten<TSourceEvent, TInnerEvent, TNextEvent>(IEventStream<TSourceEvent>, Func<TSourceEvent, IEnumerable<TInnerEvent>>, Func<TSourceEvent, TInnerEvent, TNextEvent>)

Decorates the event stream with EventListenerSelectManyDecorator<TSourceEvent, TNextEvent> that emits pairs of (source, inner) events mapped to the desired event type.

[Pure]
public static IEventStream<TNextEvent> Flatten<TSourceEvent, TInnerEvent, TNextEvent>(this IEventStream<TSourceEvent> source, Func<TSourceEvent, IEnumerable<TInnerEvent>> selector, Func<TSourceEvent, TInnerEvent, TNextEvent> resultMapper)

Parameters

source IEventStream<TSourceEvent>

Source event stream.

selector Func<TSourceEvent, IEnumerable<TInnerEvent>>

Inner event collection selector.

resultMapper Func<TSourceEvent, TInnerEvent, TNextEvent>

Next event selector..

Returns

IEventStream<TNextEvent>

Decorated IEventStream<TEvent> instance.

Type Parameters

TSourceEvent

Source event type.

TInnerEvent

Inner event type.

TNextEvent

Next event type.

ForEach<TEvent>(IEventStream<TEvent>, Action<TEvent>)

Decorates the event stream with EventListenerForEachDecorator<TEvent>.

[Pure]
public static IEventStream<TEvent> ForEach<TEvent>(this IEventStream<TEvent> source, Action<TEvent> action)

Parameters

source IEventStream<TEvent>

Source event stream.

action Action<TEvent>

Delegate to invoke on each event.

Returns

IEventStream<TEvent>

Decorated IEventStream<TEvent> instance.

Type Parameters

TEvent

Event type.

GroupBy<TEvent, TKey>(IEventStream<TEvent>, Func<TEvent, TKey>)

Decorates the event stream with EventListenerGroupByDecorator<TEvent, TKey> with Default event key equality comparer.

[Pure]
public static IEventStream<EventGrouping<TKey, TEvent>> GroupBy<TEvent, TKey>(this IEventStream<TEvent> source, Func<TEvent, TKey> keySelector) where TKey : notnull

Parameters

source IEventStream<TEvent>

Source event stream.

keySelector Func<TEvent, TKey>

Event's key selector.

Returns

IEventStream<EventGrouping<TKey, TEvent>>

Decorated IEventStream<TEvent> instance.

Type Parameters

TEvent

Event type.

TKey

Event's key type.

GroupBy<TEvent, TKey>(IEventStream<TEvent>, Func<TEvent, TKey>, IEqualityComparer<TKey>)

Decorates the event stream with EventListenerGroupByDecorator<TEvent, TKey>.

[Pure]
public static IEventStream<EventGrouping<TKey, TEvent>> GroupBy<TEvent, TKey>(this IEventStream<TEvent> source, Func<TEvent, TKey> keySelector, IEqualityComparer<TKey> equalityComparer) where TKey : notnull

Parameters

source IEventStream<TEvent>

Source event stream.

keySelector Func<TEvent, TKey>

Event's key selector.

equalityComparer IEqualityComparer<TKey>

Key equality comparer.

Returns

IEventStream<EventGrouping<TKey, TEvent>>

Decorated IEventStream<TEvent> instance.

Type Parameters

TEvent

Event type.

TKey

Event's key type.

Ignore<TEvent>(IEventStream<TEvent>)

Decorates the event stream with EventListenerIgnoreDecorator<TEvent>.

[Pure]
public static IEventStream<TEvent> Ignore<TEvent>(this IEventStream<TEvent> source)

Parameters

source IEventStream<TEvent>

Source event stream.

Returns

IEventStream<TEvent>

Decorated IEventStream<TEvent> instance.

Type Parameters

TEvent

Event type.

Last<TEvent>(IEventStream<TEvent>)

Decorates the event stream with EventListenerLastDecorator<TEvent>.

[Pure]
public static IEventStream<TEvent> Last<TEvent>(this IEventStream<TEvent> source)

Parameters

source IEventStream<TEvent>

Source event stream.

Returns

IEventStream<TEvent>

Decorated IEventStream<TEvent> instance.

Type Parameters

TEvent

Event type.

MergeAll<TEvent>(IEventStream<IEventStream<TEvent>>, int)

Decorates the event stream with EventListenerMergeAllDecorator<TEvent>.

[Pure]
public static IEventStream<TEvent> MergeAll<TEvent>(this IEventStream<IEventStream<TEvent>> source, int maxConcurrency = 2147483647)

Parameters

source IEventStream<IEventStream<TEvent>>

Source event stream.

maxConcurrency int

Maximum number of concurrently active inner event streams. Equal to MaxValue by default.

Returns

IEventStream<TEvent>

Decorated IEventStream<TEvent> instance.

Type Parameters

TEvent

Event type.

Exceptions

ArgumentOutOfRangeException

When maxConcurrency is less than 1.

Prepend<TEvent>(IEventStream<TEvent>, IEnumerable<TEvent>)

Decorates the event stream with EventListenerPrependDecorator<TEvent>.

[Pure]
public static IEventStream<TEvent> Prepend<TEvent>(this IEventStream<TEvent> source, IEnumerable<TEvent> values)

Parameters

source IEventStream<TEvent>

Source event stream.

values IEnumerable<TEvent>

Collection of values to prepend.

Returns

IEventStream<TEvent>

Decorated IEventStream<TEvent> instance.

Type Parameters

TEvent

Event type.

Prepend<TEvent>(IEventStream<TEvent>, params TEvent[])

Decorates the event stream with EventListenerPrependDecorator<TEvent>.

[Pure]
public static IEventStream<TEvent> Prepend<TEvent>(this IEventStream<TEvent> source, params TEvent[] values)

Parameters

source IEventStream<TEvent>

Source event stream.

values TEvent[]

Collection of values to prepend.

Returns

IEventStream<TEvent>

Decorated IEventStream<TEvent> instance.

Type Parameters

TEvent

Event type.

SampleWhen<TEvent, TTargetEvent>(IEventStream<TEvent>, IEventStream<TTargetEvent>)

[Pure]
public static IEventStream<TEvent> SampleWhen<TEvent, TTargetEvent>(this IEventStream<TEvent> source, IEventStream<TTargetEvent> target)

Parameters

source IEventStream<TEvent>

Source event stream.

target IEventStream<TTargetEvent>

Target event stream to wait for before emitting the last stored event.

Returns

IEventStream<TEvent>

Decorated IEventStream<TEvent> instance.

Type Parameters

TEvent

Event type.

TTargetEvent

Target event type.

SelectMany<TSourceEvent, TNextEvent>(IEventStream<TSourceEvent>, Func<TSourceEvent, IEnumerable<TNextEvent>>)

[Pure]
public static IEventStream<TNextEvent> SelectMany<TSourceEvent, TNextEvent>(this IEventStream<TSourceEvent> source, Func<TSourceEvent, IEnumerable<TNextEvent>> selector)

Parameters

source IEventStream<TSourceEvent>

Source event stream.

selector Func<TSourceEvent, IEnumerable<TNextEvent>>

Next event collection selector.

Returns

IEventStream<TNextEvent>

Decorated IEventStream<TEvent> instance.

Type Parameters

TSourceEvent

Source event type.

TNextEvent

Next event type.

Select<TSourceEvent, TNextEvent>(IEventStream<TSourceEvent>, Func<TSourceEvent, TNextEvent>)

[Pure]
public static IEventStream<TNextEvent> Select<TSourceEvent, TNextEvent>(this IEventStream<TSourceEvent> source, Func<TSourceEvent, TNextEvent> selector)

Parameters

source IEventStream<TSourceEvent>

Source event stream.

selector Func<TSourceEvent, TNextEvent>

Next event selector.

Returns

IEventStream<TNextEvent>

Decorated IEventStream<TEvent> instance.

Type Parameters

TSourceEvent

Source event type.

TNextEvent

Next event type.

ShareConcurrencyWithAll<TEvent>(IEventStream<IEventStream<TEvent>>)

Decorates the event stream with EventListenerConcurrentDecorator<TEvent> and EventListenerConcurrentAllDecorator<TEvent>, with the same synchronization object.

[Pure]
public static IEventStream<IEventStream<TEvent>> ShareConcurrencyWithAll<TEvent>(this IEventStream<IEventStream<TEvent>> source)

Parameters

source IEventStream<IEventStream<TEvent>>

Source event stream.

Returns

IEventStream<IEventStream<TEvent>>

Decorated IEventStream<TEvent> instance.

Type Parameters

TEvent

Event type.

ShareConcurrencyWithAll<TEvent>(IEventStream<IEventStream<TEvent>>, object)

Decorates the event stream with EventListenerConcurrentDecorator<TEvent> and EventListenerConcurrentAllDecorator<TEvent>, with the same synchronization object.

[Pure]
public static IEventStream<IEventStream<TEvent>> ShareConcurrencyWithAll<TEvent>(this IEventStream<IEventStream<TEvent>> source, object sync)

Parameters

source IEventStream<IEventStream<TEvent>>

Source event stream.

sync object

Shared synchronization object.

Returns

IEventStream<IEventStream<TEvent>>

Decorated IEventStream<TEvent> instance.

Type Parameters

TEvent

Event type.

ShareConcurrencyWith<TEvent, TTargetEvent, TResult>(IEventStream<TEvent>, IEventStream<TTargetEvent>, Func<IEventStream<TEvent>, IEventStream<TTargetEvent>, TResult>)

Decorates both event streams with EventListenerConcurrentDecorator<TEvent>, with the same synchronization object.

[Pure]
public static TResult ShareConcurrencyWith<TEvent, TTargetEvent, TResult>(this IEventStream<TEvent> source, IEventStream<TTargetEvent> target, Func<IEventStream<TEvent>, IEventStream<TTargetEvent>, TResult> resultSelector)

Parameters

source IEventStream<TEvent>

Source event stream.

target IEventStream<TTargetEvent>

Target event stream.

resultSelector Func<IEventStream<TEvent>, IEventStream<TTargetEvent>, TResult>

Result selector.

Returns

TResult

Selected result.

Type Parameters

TEvent

Event type.

TTargetEvent

Target event type.

TResult

Result type.

ShareConcurrencyWith<TEvent, TTargetEvent, TResult>(IEventStream<TEvent>, IEventStream<TTargetEvent>, Func<IEventStream<TEvent>, IEventStream<TTargetEvent>, TResult>, object)

Decorates both event streams with EventListenerConcurrentDecorator<TEvent>, with the same synchronization object.

[Pure]
public static TResult ShareConcurrencyWith<TEvent, TTargetEvent, TResult>(this IEventStream<TEvent> source, IEventStream<TTargetEvent> target, Func<IEventStream<TEvent>, IEventStream<TTargetEvent>, TResult> resultSelector, object sync)

Parameters

source IEventStream<TEvent>

Source event stream.

target IEventStream<TTargetEvent>

Target event stream.

resultSelector Func<IEventStream<TEvent>, IEventStream<TTargetEvent>, TResult>

Result selector.

sync object

Synchronization object.

Returns

TResult

Selected result.

Type Parameters

TEvent

Event type.

TTargetEvent

Target event type.

TResult

Result type.

Single<TEvent>(IEventStream<TEvent>)

Decorates the event stream with EventListenerSingleDecorator<TEvent>.

[Pure]
public static IEventStream<TEvent> Single<TEvent>(this IEventStream<TEvent> source)

Parameters

source IEventStream<TEvent>

Source event stream.

Returns

IEventStream<TEvent>

Decorated IEventStream<TEvent> instance.

Type Parameters

TEvent

Event type.

SkipLast<TEvent>(IEventStream<TEvent>, int)

Decorates the event stream with EventListenerSkipLastDecorator<TEvent>.

[Pure]
public static IEventStream<TEvent> SkipLast<TEvent>(this IEventStream<TEvent> source, int count)

Parameters

source IEventStream<TEvent>

Source event stream.

count int

Number of events at the end of the sequence to skip.

Returns

IEventStream<TEvent>

Decorated IEventStream<TEvent> instance.

Type Parameters

TEvent

Event type.

SkipUntil<TEvent, TTargetEvent>(IEventStream<TEvent>, IEventStream<TTargetEvent>)

[Pure]
public static IEventStream<TEvent> SkipUntil<TEvent, TTargetEvent>(this IEventStream<TEvent> source, IEventStream<TTargetEvent> target)

Parameters

source IEventStream<TEvent>

Source event stream.

target IEventStream<TTargetEvent>

Target event stream to wait for before starting to notify the decorated event listener.

Returns

IEventStream<TEvent>

Decorated IEventStream<TEvent> instance.

Type Parameters

TEvent

Event type.

TTargetEvent

Target event type.

SkipWhile<TEvent>(IEventStream<TEvent>, Func<TEvent, bool>)

Decorates the event stream with EventListenerSkipWhileDecorator<TEvent>.

[Pure]
public static IEventStream<TEvent> SkipWhile<TEvent>(this IEventStream<TEvent> source, Func<TEvent, bool> predicate)

Parameters

source IEventStream<TEvent>

Source event stream.

predicate Func<TEvent, bool>

Predicate that skips events until the first event that passes it (returns true).

Returns

IEventStream<TEvent>

Decorated IEventStream<TEvent> instance.

Type Parameters

TEvent

Event type.

Skip<TEvent>(IEventStream<TEvent>, int)

Decorates the event stream with EventListenerSkipDecorator<TEvent>.

[Pure]
public static IEventStream<TEvent> Skip<TEvent>(this IEventStream<TEvent> source, int count)

Parameters

source IEventStream<TEvent>

Source event stream.

count int

Number of events at the beginning of the sequence to skip.

Returns

IEventStream<TEvent>

Decorated IEventStream<TEvent> instance.

Type Parameters

TEvent

Event type.

SwitchAll<TEvent>(IEventStream<IEventStream<TEvent>>)

Decorates the event stream with EventListenerSwitchAllDecorator<TEvent>.

[Pure]
public static IEventStream<TEvent> SwitchAll<TEvent>(this IEventStream<IEventStream<TEvent>> source)

Parameters

source IEventStream<IEventStream<TEvent>>

Source event stream.

Returns

IEventStream<TEvent>

Decorated IEventStream<TEvent> instance.

Type Parameters

TEvent

Event type.

TakeLast<TEvent>(IEventStream<TEvent>, int)

Decorates the event stream with EventListenerTakeLastDecorator<TEvent>.

[Pure]
public static IEventStream<TEvent> TakeLast<TEvent>(this IEventStream<TEvent> source, int count)

Parameters

source IEventStream<TEvent>

Source event stream.

count int

Number of events at the end of the sequence to take.

Returns

IEventStream<TEvent>

Decorated IEventStream<TEvent> instance.

Type Parameters

TEvent

Event type.

TakeUntil<TEvent, TTargetEvent>(IEventStream<TEvent>, IEventStream<TTargetEvent>)

[Pure]
public static IEventStream<TEvent> TakeUntil<TEvent, TTargetEvent>(this IEventStream<TEvent> source, IEventStream<TTargetEvent> target)

Parameters

source IEventStream<TEvent>

Source event stream.

target IEventStream<TTargetEvent>

Target event stream to wait for before disposing the subscriber.

Returns

IEventStream<TEvent>

Decorated IEventStream<TEvent> instance.

Type Parameters

TEvent

Event type.

TTargetEvent

Target event type.

TakeWhile<TEvent>(IEventStream<TEvent>, Func<TEvent, bool>)

Decorates the event stream with EventListenerTakeWhileDecorator<TEvent>.

[Pure]
public static IEventStream<TEvent> TakeWhile<TEvent>(this IEventStream<TEvent> source, Func<TEvent, bool> predicate)

Parameters

source IEventStream<TEvent>

Source event stream.

predicate Func<TEvent, bool>

Predicate that takes events until the first event that fails it (returns false).

Returns

IEventStream<TEvent>

Decorated IEventStream<TEvent> instance.

Type Parameters

TEvent

Event type.

Take<TEvent>(IEventStream<TEvent>, int)

Decorates the event stream with EventListenerTakeDecorator<TEvent>.

[Pure]
public static IEventStream<TEvent> Take<TEvent>(this IEventStream<TEvent> source, int count)

Parameters

source IEventStream<TEvent>

Source event stream.

count int

Number of events at the beginning of the sequence to take.

Returns

IEventStream<TEvent>

Decorated IEventStream<TEvent> instance.

Type Parameters

TEvent

Event type.

ThrottleUntil<TEvent, TTargetEvent>(IEventStream<TEvent>, IEventStream<TTargetEvent>)

[Pure]
public static IEventStream<TEvent> ThrottleUntil<TEvent, TTargetEvent>(this IEventStream<TEvent> source, IEventStream<TTargetEvent> target)

Parameters

source IEventStream<TEvent>

Source event stream.

target IEventStream<TTargetEvent>

Target event stream to wait for before emitting any subsequent events.

Returns

IEventStream<TEvent>

Decorated IEventStream<TEvent> instance.

Type Parameters

TEvent

Event type.

TTargetEvent

Target event type.

ToConcurrent<TEvent>(EventPublisher<TEvent>)

Creates a new ConcurrentEventPublisher<TEvent, TPublisher> with the provided underlying event publisher.

[Pure]
public static IEventPublisher<TEvent> ToConcurrent<TEvent>(this EventPublisher<TEvent> source)

Parameters

source EventPublisher<TEvent>

Underlying event publisher.

Returns

IEventPublisher<TEvent>

New ConcurrentEventPublisher<TEvent, TPublisher> instance.

Type Parameters

TEvent

Event type.

ToConcurrent<TEvent>(EventSource<TEvent>)

Creates a new ConcurrentEventSource<TEvent, TSource> with the provided underlying event source.

[Pure]
public static IEventSource<TEvent> ToConcurrent<TEvent>(this EventSource<TEvent> source)

Parameters

source EventSource<TEvent>

Underlying event source.

Returns

IEventSource<TEvent>

New ConcurrentEventSource<TEvent, TSource> instance.

Type Parameters

TEvent

Event type.

ToConcurrent<TEvent>(HistoryEventPublisher<TEvent>)

Creates a new ConcurrentHistoryEventPublisher<TEvent, TPublisher> with the provided underlying history event publisher.

[Pure]
public static IHistoryEventPublisher<TEvent> ToConcurrent<TEvent>(this HistoryEventPublisher<TEvent> source)

Parameters

source HistoryEventPublisher<TEvent>

Underlying history event publisher.

Returns

IHistoryEventPublisher<TEvent>

New ConcurrentHistoryEventPublisher<TEvent, TPublisher> instance.

Type Parameters

TEvent

Event type.

ToTask<TEvent>(IEventStream<TEvent>, CancellationToken)

Creates a new Task<TResult> instance from the provided event source, that completes when the event source subscriber is disposed, with the last emitted event as its result.

public static Task<TEvent?> ToTask<TEvent>(this IEventStream<TEvent> source, CancellationToken cancellationToken)

Parameters

source IEventStream<TEvent>

Source event stream.

cancellationToken CancellationToken

Task's cancellation token.

Returns

Task<TEvent>

New Task<TResult> instance.

Type Parameters

TEvent

Event type.

UseSynchronizationContext<TEvent>(IEventStream<TEvent>)

[Pure]
public static IEventStream<TEvent> UseSynchronizationContext<TEvent>(this IEventStream<TEvent> source)

Parameters

source IEventStream<TEvent>

Source event stream.

Returns

IEventStream<TEvent>

Decorated IEventStream<TEvent> instance.

Type Parameters

TEvent

Event type.

Exceptions

InvalidOperationException

When Current is null.

WhereNotNull<TEvent>(IEventStream<TEvent?>)

Decorates the event stream with EventListenerWhereDecorator<TEvent> that filters out null events.

[Pure]
public static IEventStream<TEvent> WhereNotNull<TEvent>(this IEventStream<TEvent?> source) where TEvent : struct

Parameters

source IEventStream<TEvent?>

Source event stream.

Returns

IEventStream<TEvent>

Decorated IEventStream<TEvent> instance.

Type Parameters

TEvent

Event type.

WhereNotNull<TEvent>(IEventStream<TEvent?>)

Decorates the event stream with EventListenerWhereDecorator<TEvent> that filters out null events.

[Pure]
public static IEventStream<TEvent> WhereNotNull<TEvent>(this IEventStream<TEvent?> source) where TEvent : class

Parameters

source IEventStream<TEvent>

Source event stream.

Returns

IEventStream<TEvent>

Decorated IEventStream<TEvent> instance.

Type Parameters

TEvent

Event type.

WhereNotNull<TEvent>(IEventStream<TEvent?>, IEqualityComparer<TEvent>)

Decorates the event stream with EventListenerWhereDecorator<TEvent> that filters out null events.

[Pure]
public static IEventStream<TEvent> WhereNotNull<TEvent>(this IEventStream<TEvent?> source, IEqualityComparer<TEvent> comparer)

Parameters

source IEventStream<TEvent>

Source event stream.

comparer IEqualityComparer<TEvent>

Custom equality comparer.

Returns

IEventStream<TEvent>

Decorated IEventStream<TEvent> instance.

Type Parameters

TEvent

Event type.

Where<TEvent>(IEventStream<TEvent>, Func<TEvent, bool>)

Decorates the event stream with EventListenerWhereDecorator<TEvent>.

[Pure]
public static IEventStream<TEvent> Where<TEvent>(this IEventStream<TEvent> source, Func<TEvent, bool> predicate)

Parameters

source IEventStream<TEvent>

Source event stream.

predicate Func<TEvent, bool>

Predicate used for filtering events. Events that return false will be skipped.

Returns

IEventStream<TEvent>

Decorated IEventStream<TEvent> instance.

Type Parameters

TEvent

Event type.

WithIndex<TEvent>(IEventStream<TEvent>)

Decorates the event stream with EventListenerWithIndexDecorator<TEvent>.

[Pure]
public static IEventStream<WithIndex<TEvent>> WithIndex<TEvent>(this IEventStream<TEvent> source)

Parameters

source IEventStream<TEvent>

Source event stream.

Returns

IEventStream<WithIndex<TEvent>>

Decorated IEventStream<TEvent> instance.

Type Parameters

TEvent

Event type.

Zip<TSourceEvent, TTargetEvent>(IEventStream<TSourceEvent>, IEventStream<TTargetEvent>)

Decorates the event stream with EventListenerZipDecorator<TEvent, TTargetEvent, TNextEvent> that emits pairs of (source, target) events.

[Pure]
public static IEventStream<(TSourceEvent First, TTargetEvent Second)> Zip<TSourceEvent, TTargetEvent>(this IEventStream<TSourceEvent> source, IEventStream<TTargetEvent> target)

Parameters

source IEventStream<TSourceEvent>

Source event stream.

target IEventStream<TTargetEvent>

Target event stream.

Returns

IEventStream<(TSourceEvent First, TTargetEvent Second)>

Decorated IEventStream<TEvent> instance.

Type Parameters

TSourceEvent

Source event type.

TTargetEvent

Target event type.

Zip<TSourceEvent, TTargetEvent, TNextEvent>(IEventStream<TSourceEvent>, IEventStream<TTargetEvent>, Func<TSourceEvent, TTargetEvent, TNextEvent>)

[Pure]
public static IEventStream<TNextEvent> Zip<TSourceEvent, TTargetEvent, TNextEvent>(this IEventStream<TSourceEvent> source, IEventStream<TTargetEvent> target, Func<TSourceEvent, TTargetEvent, TNextEvent> selector)

Parameters

source IEventStream<TSourceEvent>

Source event stream.

target IEventStream<TTargetEvent>

Target event stream.

selector Func<TSourceEvent, TTargetEvent, TNextEvent>

Next event selector.

Returns

IEventStream<TNextEvent>

Decorated IEventStream<TEvent> instance.

Type Parameters

TSourceEvent

Source event type.

TTargetEvent

Target event type.

TNextEvent

Next event type.