52 lines
1.3 KiB
TypeScript
52 lines
1.3 KiB
TypeScript
import MWSE from "./index";
|
|
import { Message } from "./WSTSProtocol";
|
|
|
|
export default class EventPool
|
|
{
|
|
public wsts : MWSE;
|
|
public events : Map<number, [Function,Function]> = new Map();
|
|
public signals : Map<string, Function[]> = new Map();
|
|
|
|
public requests : Map<number, [Function,Function]> = new Map();
|
|
|
|
public count = 0;
|
|
constructor(wsts:MWSE){
|
|
this.wsts = wsts;
|
|
}
|
|
public request(msg: Message) : Promise<any>
|
|
{
|
|
return new Promise((ok,rej) => {
|
|
let id = ++this.count;
|
|
this.events.set(id,[
|
|
(data:any) => {
|
|
ok(data);
|
|
},
|
|
(data:any) => {
|
|
rej(data);
|
|
}
|
|
]);
|
|
this.wsts.WSTSProtocol.SendRequest(msg, id);
|
|
})
|
|
}
|
|
public stream(msg: Message, callback: Function)
|
|
{
|
|
let id = ++this.count;
|
|
this.wsts.WSTSProtocol.StartStream(msg, id);
|
|
this.events.set(id,[
|
|
(data:any) => {
|
|
callback(data);
|
|
},
|
|
() => { }
|
|
]);
|
|
}
|
|
public signal(event: string, callback: Function)
|
|
{
|
|
let T = this.signals.get(event);
|
|
if(!T)
|
|
{
|
|
this.signals.set(event, [callback]);
|
|
}else{
|
|
T.push(callback);
|
|
}
|
|
}
|
|
} |