react-application-core
Version:
A react-based application core for the business applications.
89 lines (88 loc) • 2.46 kB
TypeScript
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;
}