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.

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.

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.

ToAsyncEnumerable<TEvent>(IEventStream<TEvent>, int, bool)

Creates a new async enumerable from the provided event source.

public static IAsyncEnumerable<AsyncEnumerableEvent<TEvent>> ToAsyncEnumerable<TEvent>(this IEventStream<TEvent> source, int maxBufferSize = 2147483647, bool discardLatest = false)

Parameters

source IEventStream<TEvent>

Source event stream.

maxBufferSize int

Max size of the internal buffer of events. Equal to MaxValue by default.

discardLatest bool

Specifies whether to discard latest events when the internal buffer is full, otherwise earliest events will be discarded. Equal to false by default.

Returns

IAsyncEnumerable<AsyncEnumerableEvent<TEvent>>

New async enumerable instance.

Type Parameters

TEvent

Event type.

Exceptions

ArgumentOutOfRangeException

When maxBufferSize is less than 0.

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 = default)

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.