Table of Contents

Class EventSource<TEvent>

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

Represents a generic disposable event source that can be listened to.

public abstract class EventSource<TEvent> : IEventSource<TEvent>, IEventStream<TEvent>, IEventSource, IEventStream, IDisposable

Type Parameters

TEvent

Event type.

Inheritance
EventSource<TEvent>
Implements
IEventSource<TEvent>
IEventStream<TEvent>
Derived
Inherited Members
Extension Methods

Constructors

EventSource()

Creates a new EventSource<TEvent> instance.

protected EventSource()

Properties

HasSubscribers

Specifies whether or not this event source has any event subscribers.

public bool HasSubscribers { get; }

Property Value

bool

IsDisposed

Specifies whether or not this event stream has been disposed.

public bool IsDisposed { get; }

Property Value

bool

Subscribers

Collection of currently attached event subscribers to this event source.

public IReadOnlyCollection<IEventSubscriber> Subscribers { get; }

Property Value

IReadOnlyCollection<IEventSubscriber>

Methods

Decorate<TNextEvent>(IEventListenerDecorator<TEvent, TNextEvent>)

Creates a new decorated IEventStream<TEvent> instance.

[Pure]
public IEventStream<TNextEvent> Decorate<TNextEvent>(IEventListenerDecorator<TEvent, TNextEvent> decorator)

Parameters

decorator IEventListenerDecorator<TEvent, TNextEvent>

Event listener decorator.

Returns

IEventStream<TNextEvent>

Decorated IEventStream<TEvent> instance.

Type Parameters

TNextEvent

Next event type.

Dispose()

Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.

public void Dispose()

EnsureNotDisposed()

Throws an exception when this event source has been disposed.

protected void EnsureNotDisposed()

Exceptions

ObjectDisposedException

When this event source has been disposed.

Listen(IEventListener<TEvent>)

Attaches the provided listener to this event stream.

public IEventSubscriber Listen(IEventListener<TEvent> listener)

Parameters

listener IEventListener<TEvent>

Event listener to attach.

Returns

IEventSubscriber

New IEventSubscriber instance that can be used to detach the listener.

NotifyListeners(TEvent)

Allows to notify all current event listeners that an event has occurred.

protected void NotifyListeners(TEvent @event)

Parameters

event TEvent

Event to notify with.

OnDispose()

Allows to provide custom disposal implementation.

protected virtual void OnDispose()

OnSubscriberAdded(IEventSubscriber, IEventListener<TEvent>)

Allows to react to attachment of a new event subscriber.

protected virtual void OnSubscriberAdded(IEventSubscriber subscriber, IEventListener<TEvent> listener)

Parameters

subscriber IEventSubscriber

Attached event subscriber.

listener IEventListener<TEvent>

Event listener attached to the event subscriber.

OverrideListener(IEventSubscriber, IEventListener<TEvent>)

Allows to override the event listener.

protected virtual IEventListener<TEvent> OverrideListener(IEventSubscriber subscriber, IEventListener<TEvent> listener)

Parameters

subscriber IEventSubscriber

Event subscriber.

listener IEventListener<TEvent>

Event listener to override.

Returns

IEventListener<TEvent>

IEventListener<TEvent> instance.