@freemework/common
Version:
Common library of the Freemework Project.
16 lines (15 loc) • 798 B
TypeScript
import { FException } from "../exception/index.js";
import { FExecutionContext } from "../execution_context/index.js";
/** Define some kind of Publish-Subscribe pattern. See https://en.wikipedia.org/wiki/Publish%E2%80%93subscribe_pattern */
export interface FChannelSubscriber<TData, TEvent extends FChannelSubscriber.Event<TData> = FChannelSubscriber.Event<TData>> {
addHandler(cb: FChannelSubscriber.Callback<TData, TEvent>): void;
removeHandler(cb: FChannelSubscriber.Callback<TData, TEvent>): void;
}
export declare namespace FChannelSubscriber {
interface Event<TData> {
readonly data: TData;
}
interface Callback<TData, TEvent extends Event<TData> = Event<TData>> {
(executionContext: FExecutionContext, event: TEvent | FException): Promise<void>;
}
}