UNPKG

4.93 kBTypeScriptView Raw
1import { DeltaOutgoing, IndexedSnapshot, Outgoing } from "./data_structure";
2import { TTLOutgoing, FSRepo, ISnapshotHandler } from "./core";
3import { SportsFeedMessageGroup } from "./message_class";
4import { InjectionToken } from "injection-js";
5import * as T from 'ts-promise';
6export interface IEndPointGroupManager {
7 registerEPD(epd: IEndPointDispatcher): void;
8 deregisterEPD(epd: IEndPointDispatcher): void;
9}
10export declare const EPGM_IMPL: InjectionToken<IEndPointGroupManager>;
11export interface IEndPointGroup extends ISnapshotHandler {
12 hasEPD(stream: string, id: string): boolean;
13 addEPD(epd: IEndPointDispatcher): void;
14 removeEPD(epd: IEndPointDispatcher): void;
15 isEmpty(): boolean;
16 submitForProcess(process: IDispatchableWrapper): void;
17 getSportsFeedGrp(): SportsFeedMessageGroup;
18 getEPDs(stream: string): IEndPointDispatcher[];
19 getStreams(): string[];
20 startGetingDeltaSnapshot(fsRepo: FSRepo): void;
21 stopGetingDeltaSnapshot(fsRepo: FSRepo): void;
22 generateFull(wrapper: FullSnapshotWrapper): Outgoing[];
23 generatePartial(wrapper: PartialSnapshotWrapper): Outgoing[];
24}
25export interface IDispatchableWrapper {
26 process(): void;
27}
28export declare abstract class WrapperImpl {
29 private __epg;
30 private __stream;
31 constructor(__epg: IEndPointGroup, __stream: string);
32 epg(): IEndPointGroup;
33 stream(): string;
34}
35export declare class FullSnapshotWrapper extends WrapperImpl implements IDispatchableWrapper {
36 private _epg;
37 private _stream;
38 private _epd;
39 fullSnapshot: IndexedSnapshot;
40 constructor(_epg: IEndPointGroup, _stream: string, _epd: IEndPointDispatcher, fullSnapshot: IndexedSnapshot);
41 epg(): IEndPointGroup;
42 stream(): string;
43 epd(): IEndPointDispatcher;
44 process(): void;
45 getFullSnapshot(): IndexedSnapshot;
46 setFullSnapshot(fullSnapshot: IndexedSnapshot): void;
47}
48export declare class PartialSnapshotWrapper extends WrapperImpl implements IDispatchableWrapper {
49 private _delta;
50 private _epg;
51 private _stream;
52 constructor(_delta: DeltaOutgoing, _epg: IEndPointGroup, _stream: string);
53 epg(): IEndPointGroup;
54 stream(): string;
55 delta(): DeltaOutgoing;
56 process(): void;
57}
58export declare class IndicatorWrapper extends WrapperImpl implements IDispatchableWrapper {
59 private _delta;
60 private _epg;
61 private _stream;
62 constructor(_delta: Outgoing, _epg: IEndPointGroup, _stream: string);
63 process(): void;
64}
65export declare class EPDispatcherException extends Error {
66 constructor(message: string);
67}
68export declare class EndPointGroupManager implements IEndPointGroupManager {
69 private _fsRepo;
70 private _grp;
71 relayEPG: RelayEPG;
72 constructor(_fsRepo: FSRepo, _grp: SportsFeedMessageGroup);
73 fsRepo(): FSRepo;
74 grp(): SportsFeedMessageGroup;
75 pushFullSnapshotWrapper(epg: IEndPointGroup, epd: IEndPointDispatcher): void;
76 registerEPD(epd: IEndPointDispatcher): void;
77 deregisterEPD(epd: IEndPointDispatcher): void;
78}
79export interface IEndPointDispatcher {
80 id(): string;
81 stream(): string;
82 submit(out: Outgoing): void;
83 onException(e: Error): void;
84 isInitialized(): T.Promise<Boolean>;
85 readyToDispatch(): void;
86 isReadyToDispatch(): boolean;
87}
88export declare class DispatchersGroup {
89 private streamName;
90 private dispatchers;
91 constructor(streamName: string);
92 addEpd(epd: IEndPointDispatcher): void;
93 removeEpd(epd: IEndPointDispatcher): IEndPointDispatcher;
94 get(id: string): IEndPointDispatcher;
95 getAll(): IEndPointDispatcher[];
96 isEmpty(): boolean;
97}
98export declare abstract class AbstractEPG implements IEndPointGroup {
99 private sportsFeedGroup;
100 private dispatchers;
101 constructor(sportsFeedGroup: SportsFeedMessageGroup);
102 hasEPD(stream: string, id: string): boolean;
103 addEPD(epd: IEndPointDispatcher): void;
104 removeEPD(epd: IEndPointDispatcher): void;
105 isEmpty(): boolean;
106 abstract submitForProcess(process: IDispatchableWrapper): void;
107 getEPDs(stream: string): IEndPointDispatcher[];
108 getStreams(): string[];
109 startGetingDeltaSnapshot(fsRepo: FSRepo): void;
110 stopGetingDeltaSnapshot(fsRepo: FSRepo): void;
111 process(stream: string, snapshot: Outgoing): void;
112 getSportsFeedGrp(): SportsFeedMessageGroup;
113 generateFull(wrapper: FullSnapshotWrapper): Outgoing[];
114 generatePartial(wrapper: PartialSnapshotWrapper): Outgoing[];
115}
116export declare class RelayEPG extends AbstractEPG {
117 private _sportsFeedGroup;
118 constructor(_sportsFeedGroup: SportsFeedMessageGroup);
119 submitForProcess(wrapper: IDispatchableWrapper): void;
120 onException(e: Error): void;
121 generateFull(wrapper: FullSnapshotWrapper): Outgoing[];
122 generatePartial(wrapper: PartialSnapshotWrapper): Outgoing[];
123 generateTtl(outGng: TTLOutgoing): Outgoing[];
124 generateTtlRestore(outGng: TTLOutgoing): Outgoing[];
125 private isSameFormat;
126}