UNPKG

matterbridge-roborock-vacuum-plugin

Version:
42 lines (41 loc) 1.66 kB
import { MessageDeserializer } from '../helper/messageDeserializer.js'; import { MessageSerializer } from '../helper/messageSerializer.js'; import { ChainedConnectionListener } from './listener/implementation/chainedConnectionListener.js'; import { ChainedMessageListener } from './listener/implementation/chainedMessageListener.js'; import { SyncMessageListener } from './listener/implementation/syncMessageListener.js'; export class AbstractClient { connectionListeners = new ChainedConnectionListener(); messageListeners = new ChainedMessageListener(); connected = false; context; serializer; deserializer; syncMessageListener; logger; constructor(logger, context) { this.context = context; this.serializer = new MessageSerializer(this.context, logger); this.deserializer = new MessageDeserializer(this.context, logger); this.syncMessageListener = new SyncMessageListener(logger); this.messageListeners.register(this.syncMessageListener); this.logger = logger; } async get(duid, request) { return new Promise((resolve, reject) => { this.syncMessageListener.waitFor(request.messageId, (response) => resolve(response), reject); this.send(duid, request); }); } registerDevice(duid, localKey, pv) { this.context.registerDevice(duid, localKey, pv); } registerConnectionListener(listener) { this.connectionListeners.register(listener); } registerMessageListener(listener) { this.messageListeners.register(listener); } isConnected() { return this.connected; } }