import { DeltaOutgoing, IndexedSnapshot, Outgoing } from "./data_structure"; import { TTLOutgoing, FSRepo, ISnapshotHandler } from "./core"; import { SportsFeedMessageGroup } from "./message_class"; import { InjectionToken } from "injection-js"; import * as T from 'ts-promise'; export interface IEndPointGroupManager { registerEPD(epd: IEndPointDispatcher): void; deregisterEPD(epd: IEndPointDispatcher): void; } export declare const EPGM_IMPL: InjectionToken; export interface IEndPointGroup extends ISnapshotHandler { hasEPD(stream: string, id: string): boolean; addEPD(epd: IEndPointDispatcher): void; removeEPD(epd: IEndPointDispatcher): void; isEmpty(): boolean; submitForProcess(process: IDispatchableWrapper): void; getSportsFeedGrp(): SportsFeedMessageGroup; getEPDs(stream: string): IEndPointDispatcher[]; getStreams(): string[]; startGetingDeltaSnapshot(fsRepo: FSRepo): void; stopGetingDeltaSnapshot(fsRepo: FSRepo): void; generateFull(wrapper: FullSnapshotWrapper): Outgoing[]; generatePartial(wrapper: PartialSnapshotWrapper): Outgoing[]; } export interface IDispatchableWrapper { process(): void; } export declare abstract class WrapperImpl { private __epg; private __stream; constructor(__epg: IEndPointGroup, __stream: string); epg(): IEndPointGroup; stream(): string; } export declare class FullSnapshotWrapper extends WrapperImpl implements IDispatchableWrapper { private _epg; private _stream; private _epd; fullSnapshot: IndexedSnapshot; constructor(_epg: IEndPointGroup, _stream: string, _epd: IEndPointDispatcher, fullSnapshot: IndexedSnapshot); epg(): IEndPointGroup; stream(): string; epd(): IEndPointDispatcher; process(): void; getFullSnapshot(): IndexedSnapshot; setFullSnapshot(fullSnapshot: IndexedSnapshot): void; } export declare class PartialSnapshotWrapper extends WrapperImpl implements IDispatchableWrapper { private _delta; private _epg; private _stream; constructor(_delta: DeltaOutgoing, _epg: IEndPointGroup, _stream: string); epg(): IEndPointGroup; stream(): string; delta(): DeltaOutgoing; process(): void; } export declare class IndicatorWrapper extends WrapperImpl implements IDispatchableWrapper { private _delta; private _epg; private _stream; constructor(_delta: Outgoing, _epg: IEndPointGroup, _stream: string); process(): void; } export declare class EPDispatcherException extends Error { constructor(message: string); } export declare class EndPointGroupManager implements IEndPointGroupManager { private _fsRepo; private _grp; relayEPG: RelayEPG; constructor(_fsRepo: FSRepo, _grp: SportsFeedMessageGroup); fsRepo(): FSRepo; grp(): SportsFeedMessageGroup; pushFullSnapshotWrapper(epg: IEndPointGroup, epd: IEndPointDispatcher): void; registerEPD(epd: IEndPointDispatcher): void; deregisterEPD(epd: IEndPointDispatcher): void; } export interface IEndPointDispatcher { id(): string; stream(): string; submit(out: Outgoing): void; onException(e: Error): void; isInitialized(): T.Promise; readyToDispatch(): void; isReadyToDispatch(): boolean; } export declare class DispatchersGroup { private streamName; private dispatchers; constructor(streamName: string); addEpd(epd: IEndPointDispatcher): void; removeEpd(epd: IEndPointDispatcher): IEndPointDispatcher; get(id: string): IEndPointDispatcher; getAll(): IEndPointDispatcher[]; isEmpty(): boolean; } export declare abstract class AbstractEPG implements IEndPointGroup { private sportsFeedGroup; private dispatchers; constructor(sportsFeedGroup: SportsFeedMessageGroup); hasEPD(stream: string, id: string): boolean; addEPD(epd: IEndPointDispatcher): void; removeEPD(epd: IEndPointDispatcher): void; isEmpty(): boolean; abstract submitForProcess(process: IDispatchableWrapper): void; getEPDs(stream: string): IEndPointDispatcher[]; getStreams(): string[]; startGetingDeltaSnapshot(fsRepo: FSRepo): void; stopGetingDeltaSnapshot(fsRepo: FSRepo): void; process(stream: string, snapshot: Outgoing): void; getSportsFeedGrp(): SportsFeedMessageGroup; generateFull(wrapper: FullSnapshotWrapper): Outgoing[]; generatePartial(wrapper: PartialSnapshotWrapper): Outgoing[]; } export declare class RelayEPG extends AbstractEPG { private _sportsFeedGroup; constructor(_sportsFeedGroup: SportsFeedMessageGroup); submitForProcess(wrapper: IDispatchableWrapper): void; onException(e: Error): void; generateFull(wrapper: FullSnapshotWrapper): Outgoing[]; generatePartial(wrapper: PartialSnapshotWrapper): Outgoing[]; generateTtl(outGng: TTLOutgoing): Outgoing[]; generateTtlRestore(outGng: TTLOutgoing): Outgoing[]; private isSameFormat; }