UNPKG

zigbee-herdsman

Version:

An open source ZigBee gateway solution with node.js.

75 lines 3.09 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); /* eslint-disable-next-line @typescript-eslint/no-explicit-any*/ class Request { static defaultSendPolicy = { 0x00: 'keep-payload', // Read Attributes 0x01: 'immediate', // Read Attributes Response 0x02: 'keep-command', // Write Attributes 0x03: 'keep-cmd-undiv', // Write Attributes Undivided 0x04: 'immediate', // Write Attributes Response 0x05: 'keep-command', // Write Attributes No Response 0x06: 'keep-payload', // Configure Reporting 0x07: 'immediate', // Configure Reporting Response 0x08: 'keep-payload', // Read Reporting Configuration 0x09: 'immediate', // Read Reporting Configuration Response 0x0a: 'keep-payload', // Report attributes 0x0b: 'immediate', // Default Response 0x0c: 'keep-payload', // Discover Attributes 0x0d: 'immediate', // Discover Attributes Response 0x0e: 'keep-payload', // Read Attributes Structured 0x0f: 'keep-payload', // Write Attributes Structured 0x10: 'immediate', // Write Attributes Structured response 0x11: 'keep-payload', // Discover Commands Received 0x12: 'immediate', // Discover Commands Received Response 0x13: 'keep-payload', // Discover Commands Generated 0x14: 'immediate', // Discover Commands Generated Response 0x15: 'keep-payload', // Discover Attributes Extended 0x16: 'immediate', // Discover Attributes Extended Response }; func; frame; expires; sendPolicy; resolveQueue; rejectQueue; lastError; constructor(func, frame, timeout, sendPolicy, lastError, resolve, reject) { this.func = func; this.frame = frame; this.expires = timeout + Date.now(); this.sendPolicy = sendPolicy ?? (!frame.command ? undefined : Request.defaultSendPolicy[frame.command.ID]); this.resolveQueue = resolve === undefined ? new Array() : new Array(resolve); this.rejectQueue = reject === undefined ? new Array() : new Array(reject); this.lastError = lastError ?? Error('Request rejected before first send'); } moveCallbacks(from) { this.resolveQueue = this.resolveQueue.concat(from.resolveQueue); this.rejectQueue = this.rejectQueue.concat(from.rejectQueue); from.resolveQueue.length = 0; from.rejectQueue.length = 0; } addCallbacks(resolve, reject) { this.resolveQueue.push(resolve); this.rejectQueue.push(reject); } reject(error) { this.rejectQueue.forEach((el) => el(error ?? this.lastError)); this.rejectQueue.length = 0; } resolve(value) { this.resolveQueue.forEach((el) => el(value)); this.resolveQueue.length = 0; } async send() { try { return await this.func(this.frame); } catch (error) { this.lastError = error; throw error; } } } exports.default = Request; //# sourceMappingURL=request.js.map