UNPKG

matterbridge-roborock-vacuum-plugin

Version:
56 lines (55 loc) 2.26 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'; import { ConnectionStateListener } from './listener/implementation/connectionStateListener.js'; export class AbstractClient { isInDisconnectingStep = false; retryCount = 0; connectionListeners = new ChainedConnectionListener(); messageListeners = new ChainedMessageListener(); serializer; deserializer; context; connected = false; logger; syncMessageListener; 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; } initializeConnectionStateListener() { const connectionStateListener = new ConnectionStateListener(this.logger, this, this.clientName, this.shouldReconnect); this.connectionListeners.register(connectionStateListener); } async get(duid, request) { return new Promise((resolve, reject) => { this.syncMessageListener.waitFor(request.messageId, request, (response) => resolve(response), reject); this.send(duid, request); }) .then((result) => { return result; }) .catch((error) => { this.logger.error(error.message); return undefined; }); } registerDevice(duid, localKey, pv, nonce) { this.context.registerDevice(duid, localKey, pv, nonce); } registerConnectionListener(listener) { this.connectionListeners.register(listener); } registerMessageListener(listener) { this.messageListeners.register(listener); } isConnected() { return this.connected; } }