/** * Get the MsgType(35). * * @return the MsgType(35) or {@code null} if the field is not present */ public FIXValue getMsgType() { return valueOf(MsgType); }
/** * Get the MsgType(35). * * @return the MsgType(35) or {@code null} if the field is not present */ public FIXValue getMsgType() { return valueOf(MsgType); }
/** * Get the MsgSeqNum(34). * * @return the MsgSeqNum(34) or zero if the field is not present */ public long getMsgSeqNum() { FIXValue msgSeqNum = valueOf(MsgSeqNum); return msgSeqNum != null ? msgSeqNum.asInt() : 0; }
/** * Update SenderCompID(49) and TargetCompID(56). * * @param message a message * @throws NullPointerException if SenderCompID(49) or TargetCompID(56) * is not found */ public void updateCompID(FIXMessage message) { message.valueOf(SenderCompID).setString(senderCompId); message.valueOf(TargetCompID).setString(targetCompId); }
/** * Get the MsgSeqNum(34). * * @return the MsgSeqNum(34) or zero if the field is not present */ public long getMsgSeqNum() { FIXValue msgSeqNum = valueOf(MsgSeqNum); return msgSeqNum != null ? msgSeqNum.asInt() : 0; }
/** * <p>Update a message. When updating a message, the following mandatory * fields are updated:</p> * * <ul> * <li>MsgSeqNum(34)</li> * <li>SendingTime(52)</li> * </ul> * * @param message a message * @throws NullPointerException if MsgSeqNum(34) or SendingTime(52) is * not found */ public void update(FIXMessage message) { message.valueOf(MsgSeqNum).setInt(txMsgSeqNum); message.valueOf(SendingTime).setString(currentTimestamp); }
/** * Update SenderCompID(49) and TargetCompID(56). * * @param message a message * @throws IllegalStateException if SenderCompID(49) or TargetCompID(56) * is not found */ public void updateCompID(FIXMessage message) { FIXValue value; value = message.valueOf(SenderCompID); if (value == null) throw new IllegalStateException("SenderCompID(49) not found"); value.setString(senderCompId); value = message.valueOf(TargetCompID); if (value == null) throw new IllegalStateException("TargetCompID(56) not found"); value.setString(targetCompId); }
private void handleTestRequest(FIXMessage message) throws IOException { FIXValue testReqId = message.valueOf(TestReqID); if (testReqId == null) { sendReject(message.getMsgSeqNum(), 1, "TestReqID(112) not found"); return; } string.setLength(0); testReqId.asString(string); sendHeartbeat(string); }
private void handleLogon(FIXMessage message) throws IOException { if (senderCompId.isEmpty()) { FIXValue value = message.valueOf(TargetCompID); if (value == null) { statusListener.close(FIXConnection.this, "SenderCompID(49) not found"); return; } senderCompId = value.asString(); } if (targetCompId.isEmpty()) { FIXValue value = message.valueOf(SenderCompID); if (value == null) { statusListener.close(FIXConnection.this, "TargetCompID(56) not found"); return; } targetCompId = value.asString(); } statusListener.logon(FIXConnection.this, message); }
private void handleLogon(FIXMessage message) throws IOException { if (senderCompId.isEmpty()) { FIXValue value = message.valueOf(TargetCompID); if (value == null) { statusListener.close(FIXConnection.this, "SenderCompID(49) not found"); return; } senderCompId = value.asString(); } if (targetCompId.isEmpty()) { FIXValue value = message.valueOf(SenderCompID); if (value == null) { statusListener.close(FIXConnection.this, "TargetCompID(56) not found"); return; } targetCompId = value.asString(); } statusListener.logon(FIXConnection.this, message); }
private void handleTestRequest(FIXMessage message) throws IOException { FIXValue testReqId = message.valueOf(TestReqID); if (testReqId == null) { sendReject(message.getMsgSeqNum(), RequiredTagMissing, "TestReqID(112) not found"); return; } sendHeartbeat(testReqId); }
private void handleResendRequest(FIXMessage message) throws IOException { FIXValue beginSeqNo = message.valueOf(BeginSeqNo); if (beginSeqNo == null) { sendReject(message.getMsgSeqNum(), RequiredTagMissing, "BeginSeqNo(7) not found"); return; } FIXValue endSeqNo = message.valueOf(EndSeqNo); if (endSeqNo == null) { sendReject(message.getMsgSeqNum(), RequiredTagMissing, "EndSeqNo(16) not found"); return; } sendSequenceReset(beginSeqNo, endSeqNo.asInt() + 1); }
private void handleResendRequest(FIXMessage message) throws IOException { FIXValue beginSeqNo = message.valueOf(BeginSeqNo); if (beginSeqNo == null) { sendReject(message.getMsgSeqNum(), 1, "BeginSeqNo(7) not found"); return; } FIXValue endSeqNo = message.valueOf(EndSeqNo); if (endSeqNo == null) { sendReject(message.getMsgSeqNum(), 1, "EndSeqNo(16) not found"); return; } sendSequenceReset(beginSeqNo.asInt(), endSeqNo.asInt() + 1); }
private void handleTooLowMsgSeqNum(FIXMessage message, FIXValue msgType, long msgSeqNum) throws IOException { if (msgType.length() != 1 || msgType.asChar() != SequenceReset) { FIXValue possDupFlag = message.valueOf(PossDupFlag); if (possDupFlag == null || possDupFlag.asChar() != 'Y') statusListener.tooLowMsgSeqNum(FIXConnection.this, msgSeqNum, rxMsgSeqNum); } }
private void handleTooLowMsgSeqNum(FIXMessage message, FIXValue msgType, long msgSeqNum) throws IOException { if (msgType.length() != 1 || msgType.asChar() != SequenceReset) { FIXValue possDupFlag = message.valueOf(PossDupFlag); if (possDupFlag == null || !possDupFlag.asBoolean()) statusListener.tooLowMsgSeqNum(FIXConnection.this, msgSeqNum, rxMsgSeqNum); } }
private boolean handleSequenceReset(FIXMessage message) throws IOException { FIXValue value = message.valueOf(NewSeqNo); if (value == null) { sendReject(message.getMsgSeqNum(), 1, "NewSeqNo(36) not found"); return true; } long newSeqNo = value.asInt(); if (newSeqNo < rxMsgSeqNum) { sendReject(message.getMsgSeqNum(), 5, "NewSeqNo(36) too low"); return true; } rxMsgSeqNum = newSeqNo; FIXValue gapFillFlag = message.valueOf(GapFillFlag); boolean reset = gapFillFlag == null || gapFillFlag.asChar() != 'Y'; if (reset) statusListener.sequenceReset(FIXConnection.this); return reset; }
private boolean handleSequenceReset(FIXMessage message) throws IOException { FIXValue value = message.valueOf(NewSeqNo); if (value == null) { sendReject(message.getMsgSeqNum(), RequiredTagMissing, "NewSeqNo(36) not found"); return true; } long newSeqNo = value.asInt(); if (newSeqNo < rxMsgSeqNum) { sendReject(message.getMsgSeqNum(), ValueIsIncorrect, "NewSeqNo(36) too low"); return true; } rxMsgSeqNum = newSeqNo; FIXValue gapFillFlag = message.valueOf(GapFillFlag); boolean reset = gapFillFlag == null || !gapFillFlag.asBoolean(); if (reset) statusListener.sequenceReset(FIXConnection.this); return reset; }
@Override public void logon(FIXConnection connection, FIXMessage message) throws IOException { FIXValue username = message.valueOf(Username); if (username == null) { requiredTagMissing(message, "Username(553) missing"); return; } FIXValue password = message.valueOf(Password); if (password == null) { requiredTagMissing(message, "Password(554) missing"); return; } fix.updateCompID(message); ASCII.putLeft(loginRequest.username, username.asString()); ASCII.putLeft(loginRequest.password, password.asString()); ASCII.putRight(loginRequest.requestedSession, ""); ASCII.putLongRight(loginRequest.requestedSequenceNumber, 0); orderEntry.login(loginRequest); }
private void sendSequenceReset(FIXValue msgSeqNum, long newSeqNo) throws IOException { prepare(txMessage, SequenceReset); txMessage.valueOf(MsgSeqNum).set(msgSeqNum); txMessage.addField(GapFillFlag).setBoolean(true); txMessage.addField(NewSeqNo).setInt(newSeqNo); send(txMessage); }
private void sendSequenceReset(long msgSeqNum, long newSeqNo) throws IOException { prepare(txMessage, SequenceReset); txMessage.valueOf(MsgSeqNum).setInt(msgSeqNum); txMessage.addField(GapFillFlag).setChar('Y'); txMessage.addField(NewSeqNo).setInt(newSeqNo); send(txMessage); }