UNPKG

@sotatech/nest-quickfix

Version:

A powerful NestJS implementation of the FIX (Financial Information eXchange) protocol. Provides high-performance, reliable messaging for financial trading applications with built-in session management, message validation, and recovery mechanisms.

57 lines 1.81 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ProtocolManager = void 0; const fields_1 = require("../fields"); const validator_1 = require("./validator"); class ProtocolManager { constructor() { this.validator = validator_1.FIX44Validator; this.messageQueue = []; this.isLoggedOn = false; } processIncoming(message) { this.validator.validateRequiredFields(message); this.validator.validateFieldOrder(message); this.validator.validateFieldValues(message); if (this.shouldQueueMessage(message)) { this.messageQueue.push(message); return; } this.handleMessage(message); } shouldQueueMessage(message) { if (!this.isLoggedOn && message.getField(fields_1.Fields.MsgType) !== 'A') { return true; } return false; } handleMessage(message) { const msgType = message.getField(fields_1.Fields.MsgType); switch (msgType) { case fields_1.MsgType.Logon: this.handleLogon(message); break; case fields_1.MsgType.Heartbeat: this.handleHeartbeat(message); break; case fields_1.MsgType.Logout: this.handleLogout(message); break; } } handleLogon(message) { this.isLoggedOn = true; while (this.messageQueue.length > 0) { const queuedMsg = this.messageQueue.shift(); if (queuedMsg) this.handleMessage(queuedMsg); } } handleHeartbeat(message) { } handleLogout(message) { this.isLoggedOn = false; } } exports.ProtocolManager = ProtocolManager; //# sourceMappingURL=manager.js.map