UNPKG

react-application-core

Version:

A react-based application core for the business applications.

89 lines (88 loc) 2.46 kB
import { ILogger } from 'ts-smart-logger'; import { Store } from 'redux'; import { ISettingsEntity } from '../settings'; import { PayloadWrapper } from './protocol'; import { IChannel, IChannelClient, IStoreEntity } from '../definition'; export declare abstract class BaseChannel<TConfig = {}, TMessage = unknown> implements IChannel<TConfig, TMessage> { protected static readonly logger: ILogger; protected readonly settings: ISettingsEntity; protected readonly appStore: Store<IStoreEntity>; private readonly clients; /** * @stable [06.11.2020] * @param ip * @param config */ abstract connect(ip: string, config?: TConfig): Promise<void>; /** * @stable [04.11.2020] * @param ip */ disconnect(ip: any): Promise<void>; /** * @stable [06.11.2020] * @param ip * @param client */ onConnect(ip: string, client: IChannelClient): void; /** * @stable [06.11.2020] * @param ip * @param client */ onDisconnect(ip: string, client: IChannelClient): void; /** * @stable [06.11.2020] * @param ip * @param messageName * @param payload */ onMessage(ip: string, messageName?: string, payload?: string): void; /** * @stable [04.11.2020] * @param ip * @param $event * @param args */ emitEvent(ip: string, $event: string, ...args: TMessage[]): Promise<void>; /** * @stable [06.11.2020] * @param ip * @param args */ emitChannelEvent(ip: string, ...args: TMessage[]): Promise<void>; /** * @stable [06.11.2020] * @param ip * @param requestPayload */ emitRequestPayload(ip: string, requestPayload: PayloadWrapper): Promise<void>; /** * @stable [08.11.2020] * @param ip */ hasClient(ip: any): boolean; /** * @stable [06.11.2020] * @param ip * @param client * @protected */ protected registerClient(ip: string, client: IChannelClient): Promise<void>; /** * @stable [06.11.2020] * @param ip * @protected */ protected unregisterClient(ip: string): Promise<void>; /** * @stable [06.11.2020] * @protected */ protected get eventToListen(): string; /** * @stable [06.11.2020] * @protected */ protected get eventToEmit(): string; }