UNPKG

jspurefix

Version:
37 lines 1.7 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const ascii_encoder_1 = require("../../buffer/ascii/ascii-encoder"); const msg_transmitter_1 = require("../msg-transmitter"); const time_formatter_1 = require("../../buffer/ascii/time-formatter"); class AsciiMsgTransmitter extends msg_transmitter_1.MsgTransmitter { constructor(config) { super(config.definitions, config.description); this.config = config; this.msgSeqNum = 1; const buffer = this.buffer; this.encoder = new ascii_encoder_1.AsciiEncoder(buffer, config.definitions, new time_formatter_1.TimeFormatter(buffer), config.delimiter); this.header = config.definitions.component.get('header'); this.trailer = config.definitions.component.get('trailer'); } encodeMessage(msgType, obj) { const encoder = this.encoder; const factory = this.config.factory; const hdr = factory.header(msgType, this.msgSeqNum++, this.time || new Date()); const buffer = this.buffer; buffer.reset(); const msgDef = this.definitions.message.get(msgType); if (!msgDef) { return; } encoder.encode(hdr, this.header.name); encoder.encode(obj, msgDef.name); const lenPos = encoder.bodyLengthPos; const len = buffer.getPos(); buffer.patchPaddedNumberAtPos(lenPos, len, 7); const checksum = buffer.checksum(); const trl = factory.trailer(checksum); encoder.encode(trl, this.trailer.name); } } exports.AsciiMsgTransmitter = AsciiMsgTransmitter; //# sourceMappingURL=ascii-msg-transmitter.js.map