private boolean isGoodTime(Message message) throws FieldNotFound { if (!checkLatency) { return true; } final Date sendingTime = message.getHeader().getUtcTimeStamp(SendingTime.FIELD); return Math.abs(SystemTime.currentTimeMillis() - sendingTime.getTime()) / 1000 <= maxLatency; }
private boolean isGoodTime(Message message) throws FieldNotFound { if (!checkLatency) { return true; } final LocalDateTime sendingTime = message.getHeader().getUtcTimeStamp(SendingTime.FIELD); return Math.abs(SystemTime.currentTimeMillis() - sendingTime.toInstant(ZoneOffset.UTC).toEpochMilli()) / 1000 <= maxLatency; }
private boolean isGoodTime(Message message) throws FieldNotFound { if (!checkLatency) { return true; } final LocalDateTime sendingTime = message.getHeader().getUtcTimeStamp(SendingTime.FIELD); return Math.abs(SystemTime.currentTimeMillis() - sendingTime.toInstant(ZoneOffset.UTC).toEpochMilli()) / 1000 <= maxLatency; }
final SessionID sessionId) throws FieldNotFound, UnsupportedMessageType, IncorrectTagValue { final Date date = message.getHeader().getUtcTimeStamp(SendingTime.FIELD); final String symbol = message.getField(new Symbol()).getValue(); final CurrencyPair currencyPair = OKCoinFIXAdapters.adaptCurrencyPair(symbol);
header.setBoolean(PossDupFlag.FIELD, true); initializeHeader(header); header.setUtcTimeStamp(OrigSendingTime.FIELD, header.getUtcTimeStamp(SendingTime.FIELD), includeMillis()); header.setInt(MsgSeqNum.FIELD, beginSeqNo);
/** * @param receivedMessage if not null, it is the message received and upon which the resend request is generated * @param beginSeqNo * @param endSeqNo * @throws FieldNotFound */ private void generateSequenceReset(Message receivedMessage, int beginSeqNo, int endSeqNo) throws FieldNotFound { final Message sequenceReset = messageFactory.create(sessionID.getBeginString(), MsgType.SEQUENCE_RESET); final Header header = sequenceReset.getHeader(); header.setBoolean(PossDupFlag.FIELD, true); initializeHeader(header); header.setUtcTimeStamp(OrigSendingTime.FIELD, header.getUtcTimeStamp(SendingTime.FIELD), getTimestampPrecision()); header.setInt(MsgSeqNum.FIELD, beginSeqNo); sequenceReset.setInt(NewSeqNo.FIELD, endSeqNo); sequenceReset.setBoolean(GapFillFlag.FIELD, true); if (receivedMessage != null && enableLastMsgSeqNumProcessed) { try { sequenceReset.getHeader().setInt(LastMsgSeqNumProcessed.FIELD, receivedMessage.getHeader().getInt(MsgSeqNum.FIELD)); } catch (final FieldNotFound e) { // should not happen as MsgSeqNum must be present getLog().onErrorEvent("Received message without MsgSeqNum " + getMessageToLog(receivedMessage)); } } sendRaw(sequenceReset, beginSeqNo); getLog().onEvent("Sent SequenceReset TO: " + endSeqNo); }
private boolean validatePossDup(Message msg) throws FieldNotFound, IOException { final Message.Header header = msg.getHeader(); final String msgType = header.getString(MsgType.FIELD); if (!MsgType.SEQUENCE_RESET.equals(msgType)) { if (header.isSetField(OrigSendingTime.FIELD)) { final LocalDateTime origSendingTime = header.getUtcTimeStamp(OrigSendingTime.FIELD); final LocalDateTime sendingTime = header.getUtcTimeStamp(SendingTime.FIELD); if (origSendingTime.compareTo(sendingTime) > 0) { generateReject(msg, BAD_TIME_REJ_REASON, OrigSendingTime.FIELD); generateLogout(BAD_ORIG_TIME_TEXT); return false; } } else { // QFJ-703 if (requiresOrigSendingTime) { generateReject(msg, SessionRejectReason.REQUIRED_TAG_MISSING, OrigSendingTime.FIELD); return false; } } } return true; }
private boolean validatePossDup(Message msg) throws FieldNotFound, IOException { final Message.Header header = msg.getHeader(); final String msgType = header.getString(MsgType.FIELD); if (!msgType.equals(MsgType.SEQUENCE_RESET)) { if (header.isSetField(OrigSendingTime.FIELD)) { final Date origSendingTime = header.getUtcTimeStamp(OrigSendingTime.FIELD); final Date sendingTime = header.getUtcTimeStamp(SendingTime.FIELD); if (origSendingTime.compareTo(sendingTime) > 0) { generateReject(msg, SessionRejectReason.SENDINGTIME_ACCURACY_PROBLEM, 0); generateLogout(); return false; } } else { // QFJ-703 if (requiresOrigSendingTime) { generateReject(msg, SessionRejectReason.REQUIRED_TAG_MISSING, OrigSendingTime.FIELD); return false; } } } return true; }
/** * @param receivedMessage if not null, it is the message received and upon which the resend request is generated * @param beginSeqNo * @param endSeqNo * @throws FieldNotFound */ private void generateSequenceReset(Message receivedMessage, int beginSeqNo, int endSeqNo) throws FieldNotFound { final Message sequenceReset = messageFactory.create(sessionID.getBeginString(), MsgType.SEQUENCE_RESET); final Header header = sequenceReset.getHeader(); header.setBoolean(PossDupFlag.FIELD, true); initializeHeader(header); header.setUtcTimeStamp(OrigSendingTime.FIELD, header.getUtcTimeStamp(SendingTime.FIELD), getTimestampPrecision()); header.setInt(MsgSeqNum.FIELD, beginSeqNo); sequenceReset.setInt(NewSeqNo.FIELD, endSeqNo); sequenceReset.setBoolean(GapFillFlag.FIELD, true); if (receivedMessage != null && enableLastMsgSeqNumProcessed) { try { sequenceReset.getHeader().setInt(LastMsgSeqNumProcessed.FIELD, receivedMessage.getHeader().getInt(MsgSeqNum.FIELD)); } catch (final FieldNotFound e) { // should not happen as MsgSeqNum must be present getLog().onErrorEvent("Received message without MsgSeqNum " + getMessageToLog(receivedMessage)); } } sendRaw(sequenceReset, beginSeqNo); getLog().onEvent("Sent SequenceReset TO: " + endSeqNo); }
private boolean validatePossDup(Message msg) throws FieldNotFound, IOException { final Message.Header header = msg.getHeader(); final String msgType = header.getString(MsgType.FIELD); if (!MsgType.SEQUENCE_RESET.equals(msgType)) { if (header.isSetField(OrigSendingTime.FIELD)) { final LocalDateTime origSendingTime = header.getUtcTimeStamp(OrigSendingTime.FIELD); final LocalDateTime sendingTime = header.getUtcTimeStamp(SendingTime.FIELD); if (origSendingTime.compareTo(sendingTime) > 0) { generateReject(msg, BAD_TIME_REJ_REASON, OrigSendingTime.FIELD); generateLogout(BAD_ORIG_TIME_TEXT); return false; } } else { // QFJ-703 if (requiresOrigSendingTime) { generateReject(msg, SessionRejectReason.REQUIRED_TAG_MISSING, OrigSendingTime.FIELD); return false; } } } return true; }
private void initializeResendFields(Message message) throws FieldNotFound { final Message.Header header = message.getHeader(); final Date sendingTime = header.getUtcTimeStamp(SendingTime.FIELD); header.setUtcTimeStamp(OrigSendingTime.FIELD, sendingTime, includeMillis()); header.setBoolean(PossDupFlag.FIELD, true); insertSendingTime(header); }
private void initializeResendFields(Message message) throws FieldNotFound { final Message.Header header = message.getHeader(); final LocalDateTime sendingTime = header.getUtcTimeStamp(SendingTime.FIELD); header.setUtcTimeStamp(OrigSendingTime.FIELD, sendingTime, getTimestampPrecision()); header.setBoolean(PossDupFlag.FIELD, true); insertSendingTime(header); }
static Date getSendingTime(Message inMessage) { if (inMessage.getHeader().isSetField(SendingTime.FIELD)) { try { return inMessage.getHeader().getUtcTimeStamp(SendingTime.FIELD); } catch (FieldNotFound ignore) { } } return null; } static String getExecutionID(Message inMessage) {
private void initializeResendFields(Message message) throws FieldNotFound { final Message.Header header = message.getHeader(); final LocalDateTime sendingTime = header.getUtcTimeStamp(SendingTime.FIELD); header.setUtcTimeStamp(OrigSendingTime.FIELD, sendingTime, getTimestampPrecision()); header.setBoolean(PossDupFlag.FIELD, true); insertSendingTime(header); }