@freemework/common
Version:
Common library of the Freemework Project.
22 lines (20 loc) • 826 B
text/typescript
import { FExecutionContext } from "../execution_context/index.js";
/**
* FChannelEvent provides a channel to handle events asynchronously.
*
* This is very similar to FChannelSubscriber but callback signature
* does not accept Exception.
* In another words: FChannelEvent is unbreakable channel version of FChannelSubscriber.
*/
export interface FChannelEvent<TData, TEvent extends FChannelEvent.Event<TData> = FChannelEvent.Event<TData>> {
addHandler(cb: FChannelEvent.Callback<TData, TEvent>): void;
removeHandler(cb: FChannelEvent.Callback<TData, TEvent>): void;
}
export namespace FChannelEvent {
export interface Event<TData> {
readonly data: TData;
}
export interface Callback<TData, TEvent extends Event<TData> = Event<TData>> {
(executionContext: FExecutionContext, event: TEvent): Promise<void>;
}
}