UNPKG

jspurefix

Version:
57 lines 2.03 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const ascii_parser_1 = require("../buffer/ascii/ascii-parser"); const ascii_1 = require("./ascii"); const buffer_1 = require("../buffer"); const fixml_1 = require("../buffer/fixml"); const fixml_2 = require("./fixml"); class MsgTransport { constructor(id, config, duplex) { this.id = id; this.config = config; this.duplex = duplex; const delimiter = config.delimiter; if (!delimiter) { throw new Error(`no delimiter char given.`); } const description = config.description; const definitions = config.definitions; const protocol = description.application.protocol; switch (protocol) { case 'ascii': { this.transmitter = new ascii_1.AsciiMsgTransmitter(config); this.receiver = new ascii_parser_1.AsciiParser(definitions, duplex.readable, delimiter, buffer_1.Ascii.Pipe); break; } case 'fixml': { this.transmitter = new fixml_2.FixmlMsgTransmitter(config); this.receiver = new fixml_1.FiXmlParser(config, duplex.readable); break; } default: { throw new Error(`session Protocol must ascii or fixml. got ${protocol}`); } } if (duplex.writable) { this.transmitter.encodeStream.pipe(duplex.writable); } } end() { this.duplex.end(); } wait() { return new Promise((resolve, reject) => { this.receiver.on('end', () => { resolve(); }); this.receiver.on('error', (e) => { reject(e); }); this.transmitter.on('error', (e) => { reject(e); }); }); } } exports.MsgTransport = MsgTransport; //# sourceMappingURL=msg-transport.js.map