UNPKG

jspurefix

Version:
157 lines 5.66 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const enum_1 = require("../types/enum"); const repo_1 = require("../types/FIX4.4/repo"); const FIXML50SP2_1 = require("../types/FIXML50SP2"); class SessionMsgFactory { constructor(description, mutator = null) { this.description = description; this.mutator = mutator; this.isAscii = description.application.protocol === 'ascii'; } reject(msgType, seqNo, msg, reason) { const o = { RefMsgType: msgType, SessionRejectReason: reason, RefSeqNum: seqNo, Text: msg }; return this.mutator ? this.mutator(this.description, enum_1.MsgType.Reject, o) : o; } logon(userRequestId = '', isResponse = false) { if (this.isAscii) { return this.asciiLogon(); } else { return this.fixmlLogon(userRequestId, isResponse); } } logout(msgType, text) { if (this.isAscii) { return this.asciiLogout(text); } else { return this.fixmlLogout(text, msgType !== 'UserReq'); } } testRequest(reqId = `ping-${new Date().toUTCString()}`) { const o = { TestReqID: reqId }; return this.mutator ? this.mutator(this.description, enum_1.MsgType.TestRequest, o) : o; } heartbeat(testReqId) { const o = { TestReqID: testReqId }; return this.mutator ? this.mutator(this.description, enum_1.MsgType.Heartbeat, o) : o; } resendRequest(from, to) { const o = { BeginSeqNo: from, EndSeqNo: to }; return this.mutator ? this.mutator(this.description, enum_1.MsgType.ResendRequest, o) : o; } sequenceReset(newSeqNo) { const o = { GapFillFlag: true, NewSeqNo: newSeqNo }; return this.mutator ? this.mutator(this.description, enum_1.MsgType.SequenceReset, o) : o; } header(msgType, seqNum = 0, time = new Date()) { if (this.isAscii) { return this.asciiHeader(msgType, seqNum, time); } else { return this.fixmlHeader(); } } trailer(checksum) { return { CheckSum: checksum.toString() }; } asciiLogon() { const description = this.description; const o = { Username: description.Username, Password: description.Password, HeartBtInt: description.HeartBtInt, ResetSeqNumFlag: description.ResetSeqNumFlag, EncryptMethod: repo_1.EncryptMethod.None }; return this.mutator ? this.mutator(this.description, enum_1.MsgType.Logon, o) : o; } asciiLogout(text) { const o = { Text: text }; return this.mutator ? this.mutator(this.description, enum_1.MsgType.Logout, o) : o; } fixmlLogon(userRequestId, isResponse) { const description = this.description; if (!isResponse) { const o = { Username: description.Username, Password: description.Password, UserRequestID: userRequestId, UserRequestType: FIXML50SP2_1.UserRequestType.LogOnUser }; return this.mutator ? this.mutator(this.description, enum_1.MsgType.Logon, o) : o; } else { const o = { Username: description.Username, UserRequestID: userRequestId, UserStatus: FIXML50SP2_1.UserStatus.LoggedIn }; return this.mutator ? this.mutator(this.description, enum_1.MsgType.Logon, o) : o; } } fixmlLogout(userRequestId, isResponse) { if (!isResponse) { const o = { Username: this.description.Username, UserRequestID: userRequestId, UserRequestType: FIXML50SP2_1.UserRequestType.LogOffUser }; return this.mutator ? this.mutator(this.description, enum_1.MsgType.Logon, o) : o; } else { const o = { Username: this.description.Username, UserRequestID: userRequestId, UserStatus: FIXML50SP2_1.UserStatus.NotLoggedIn }; return this.mutator ? this.mutator(this.description, enum_1.MsgType.Logon, o) : o; } } asciiHeader(msgType, seqNum, time) { const description = this.description; const o = { BeginString: description.BeginString, BodyLength: 9999999, MsgType: msgType, SenderCompID: description.SenderCompId, MsgSeqNum: seqNum, SendingTime: time, TargetCompID: description.TargetCompID, TargetSubID: description.TargetSubID }; return this.mutator ? this.mutator(description, 'StandardHeader', o) : o; } fixmlHeader() { const description = this.description; const o = { SenderCompID: description.SenderCompId, TargetCompID: description.TargetCompID, SenderSubID: description.SenderSubID, TargetSubID: description.TargetSubID }; return this.mutator ? this.mutator(this.description, enum_1.MsgType.Logon, o) : o; } } exports.SessionMsgFactory = SessionMsgFactory; //# sourceMappingURL=session-msg-factory.js.map