private boolean logErrorAndDisconnectIfRequired(final Exception e, Message message) { final boolean resetOrDisconnectIfRequired = resetOrDisconnectIfRequired(message); if (resetOrDisconnectIfRequired) { getLog().onErrorEvent("Encountered invalid message: " + e + ": " + getMessageToLog(message)); } return resetOrDisconnectIfRequired; }
private boolean logErrorAndDisconnectIfRequired(final Exception e, Message message) { final boolean resetOrDisconnectIfRequired = resetOrDisconnectIfRequired(message); if (resetOrDisconnectIfRequired) { getLog().onErrorEvent("Encountered invalid message: " + e + ": " + getMessageToLog(message)); } return resetOrDisconnectIfRequired; }
private void handleExceptionAndRejectMessage(final String msgType, final Message message, final HasFieldAndReason e) throws FieldNotFound, IOException { if (MsgType.LOGON.equals(msgType)) { logoutWithErrorMessage(e.getMessage()); } else { getLog().onErrorEvent("Rejecting invalid message: " + e + ": " + getMessageToLog(message)); generateReject(message, e.getMessage(), e.getSessionRejectReason(), e.getField()); } }
private void handleExceptionAndRejectMessage(final String msgType, final Message message, final HasFieldAndReason e) throws FieldNotFound, IOException { if (MsgType.LOGON.equals(msgType)) { logoutWithErrorMessage(e.getMessage()); } else { getLog().onErrorEvent("Rejecting invalid message: " + e + ": " + getMessageToLog(message)); generateReject(message, e.getMessage(), e.getSessionRejectReason(), e.getField()); } }
disconnect("Received message without MsgSeqNum: " + getMessageToLog(message), true); return; throw e; } else { getLog().onErrorEvent("Warn: incoming message with " + e + ": " + getMessageToLog(message)); getLog().onErrorEvent( "Warn: incoming message with incorrect field: " + message.getField(e.getField()) + ": " + getMessageToLog(message)); getLog().onErrorEvent( "Warn: incoming message with missing field: " + e.getField() + ": " + e.getMessage() + ": " + getMessageToLog(message)); throw e; } else { getLog().onErrorEvent("Warn: incoming " + e + ": " + getMessageToLog(message)); generateReject(message, "Message failed basic validity check"); } else { getLog().onErrorEvent("Skipping invalid message: " + e + ": " + getMessageToLog(message)); if (resetOrDisconnectIfRequired(message)) { return; LogUtil.logThrowable(sessionID, "Error processing message: " + getMessageToLog(message), e); if (resetOrDisconnectIfRequired(message)) { return;
disconnect("Received message without MsgSeqNum: " + getMessageToLog(message), true); return; throw e; } else { getLog().onErrorEvent("Warn: incoming message with " + e + ": " + getMessageToLog(message)); getLog().onErrorEvent( "Warn: incoming message with incorrect field: " + message.getField(e.getField()) + ": " + getMessageToLog(message)); getLog().onErrorEvent( "Warn: incoming message with missing field: " + e.getField() + ": " + e.getMessage() + ": " + getMessageToLog(message)); throw e; } else { getLog().onErrorEvent("Warn: incoming " + e + ": " + getMessageToLog(message)); generateReject(message, "Message failed basic validity check"); } else { getLog().onErrorEvent("Skipping invalid message: " + e + ": " + getMessageToLog(message)); if (resetOrDisconnectIfRequired(message)) { return; LogUtil.logThrowable(sessionID, "Error processing message: " + getMessageToLog(message), e); if (resetOrDisconnectIfRequired(message)) { return;
/** * @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); }
/** * @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); }