UNPKG

@allgemein/eventbus

Version:
83 lines 2.64 kB
// import {EventEmitter} from 'events'; // import {IPseudoObject} from '../../bus/IPseudoObject'; // import {CryptUtils} from '@allgemein/base'; // import {MqttEventBusAdapter} from './MqttEventBusAdapter'; // // // export class MqttObject implements IPseudoObject { // // id: string; // uuid: string; // object: any; // adapter: MqttEventBusAdapter; // emitter: EventEmitter; // error: Error = null; // result: any = null; // // constructor(adapter2: MqttEventBusAdapter, eventID: string, object: any) { // this.uuid = CryptUtils.shorthash(Date.now() + ''); // // this.id = eventID; // this.object = object; // this.adapter = adapter2; // this.emitter = this.adapter.getEmitter(); // this.emitter.once(this.id + '_' + this.uuid + '_done', (err: Error, res: any) => { // this.result = res; // this.error = err; // // TODO maybe we need results from multiple nodes? We should collect node number and subscriptions! Currently we need one or none ... // this.emitter.removeAllListeners(this.id + '_' + this.uuid + '_done'); // }); // // } // // async fire() { // // await this.adapter.getSubscriber(); // // let writer = await this.adapter.getPublisher(); // // // // let _msp = { // // source: this.adapter.nodeId, // // uuid: this.uuid, // // status: 'work', // // event: this.id, // // object: this.object // // }; // // // // let msg: IMessage = { // // topic: this.adapter.name, // // message: Serializer.serialize(_msp) // // }; // // await writer.publish(msg); // } // // // waitForResult(ttl: number = 10000): Promise<any> { // return new Promise(async (resolve, reject) => { // // let timer:Timer = null; // // // // if (ttl > 0) { // // timer = setTimeout(() => { // // this.emitter.removeAllListeners(this.id + '_' + this.uuid + '_done'); // // reject(new Error('ttl ' + ttl + ' passed')); // // }, ttl); // // } // // // // if (this.result) { // // clearTimeout(timer); // // resolve(this.result); // // } else if (this.error) { // // clearTimeout(timer); // // reject(this.error); // // } else { // // this.emitter.once(this.id + '_' + this.uuid + '_done', (err: Error, res: any) => { // // clearTimeout(timer); // // if (err) { // // reject(err) // // } else { // // resolve(res) // // } // // }); // // } // }); // } // } //# sourceMappingURL=MqttObject.js.map