const ByteStream = require("../../ByteStream/ByteStream") class HeartbeatMessage { constructor(config, crypto, logger, data = null) { this.config = config this.crypto = crypto this.logger = logger this.type = 0 this.data = data } encode() { const stream = new ByteStream() const timestamp = Math.floor(Date.now() / 1000) stream.writeUInt32(timestamp) // Client status stream.writeUInt8(1) // 1 = alive stream.writeUInt32(this.data?.sequence || 0) this.logger.debug(`Encoding HeartbeatMessage`, { timestamp: timestamp, sequence: this.data?.sequence || 0, }) return stream.getBuffer() } decode(buffer) { const stream = new ByteStream(buffer) const data = { timestamp: stream.readUInt32(), status: stream.readUInt8(), sequence: stream.readUInt32(), } this.logger.debug(`Decoded HeartbeatMessage`, data) return data } getType() { return this.type } } module.exports = HeartbeatMessage