private static ApplVerID getApplVerID(Session session, String messageString) throws InvalidMessage { ApplVerID applVerID = null; final String applVerIdString = getStringField(messageString, ApplVerID.FIELD); if (applVerIdString != null) { applVerID = new ApplVerID(applVerIdString); } if (applVerID == null) { applVerID = session.getTargetDefaultApplicationVersionID(); } if (applVerID == null && isLogon(messageString)) { final String defaultApplVerIdString = getStringField(messageString, DefaultApplVerID.FIELD); if (defaultApplVerIdString != null) { applVerID = new ApplVerID(defaultApplVerIdString); } } if (applVerID == null) { throw newInvalidMessageException("Can't determine ApplVerID from message " + messageString, getMinimalMessage(messageString)); } return applVerID; }
/** * Calculates the checksum for the given message * (excluding existing checksum field, if one exists). * The {@link CharsetSupport#setCharset global charset} is used. * * @param message the message to calculate the checksum on * @return the calculated checksum */ public static int checksum(String message) { return checksum(CharsetSupport.getCharsetInstance(), message, true); }
public static SessionID getSessionID(Message fixMessage) { final Header header = fixMessage.getHeader(); return new SessionID(getFieldOrDefault(header, BeginString.FIELD, null), getFieldOrDefault( header, SenderCompID.FIELD, null), getFieldOrDefault(header, SenderSubID.FIELD, null), getFieldOrDefault(header, SenderLocationID.FIELD, null), getFieldOrDefault( header, TargetCompID.FIELD, null), getFieldOrDefault(header, TargetSubID.FIELD, null), getFieldOrDefault(header, TargetLocationID.FIELD, null), null); }
public static String getMessageType(String messageString) throws InvalidMessage { final String value = getStringField(messageString, 35); if (value == null) { throw newInvalidMessageException("Missing or garbled message type in " + messageString, getMinimalMessage(messageString)); } return value; }
private void validateCheckSum(String messageData) throws InvalidMessage { try { // Body length is checked at the protocol layer final int checksum = trailer.getInt(CheckSum.FIELD); if (checksum != MessageUtils.checksum(messageData)) { // message will be ignored if checksum is wrong or missing throw MessageUtils.newInvalidMessageException("Expected CheckSum=" + MessageUtils.checksum(messageData) + ", Received CheckSum=" + checksum + " in " + messageData, this); } } catch (final FieldNotFound e) { throw MessageUtils.newInvalidMessageException("Field not found: " + e.field + " in " + messageData, this); } }
final String beginString = getStringField(messageString, BeginString.FIELD); final String msgType = getMessageType(messageString); applVerID = getApplVerID(session, messageString); } else { applVerID = toApplVerID(beginString); final DataDictionary payloadDictionary = MessageUtils.isAdminMessage(msgType) ? sessionDataDictionary : applicationDataDictionary;
private ApplVerID toApplVerID(String value) { if (isApplVerIdEnum(value)) { return new ApplVerID(value); } else { // value should be a beginString return MessageUtils.toApplVerID(value); } }
@Override public void messageReceived(IoSession ioSession, Object message) throws Exception { String messageString = (String) message; SessionID remoteSessionID = MessageUtils.getReverseSessionID(messageString); Session quickFixSession = findQFSession(ioSession, remoteSessionID); if (quickFixSession != null) { sessionLog.onIncoming(messageString); try { Message fixMessage = parse(quickFixSession, messageString); processMessage(ioSession, fixMessage); } catch (InvalidMessage e) { if (MessageUtils.isLogon(messageString)) { sessionLog.onErrorEvent("Invalid LOGON message, disconnecting: " + e.getMessage()); ioSession.closeNow();
public static SessionID getSessionID(String messageString) { return new SessionID(getStringField(messageString, BeginString.FIELD), getStringField( messageString, SenderCompID.FIELD), getStringField(messageString, SenderSubID.FIELD), getStringField(messageString, SenderLocationID.FIELD), getStringField(messageString, TargetCompID.FIELD), getStringField(messageString, TargetSubID.FIELD), getStringField(messageString, TargetLocationID.FIELD), null); }
@Override public void messageReceived(IoSession ioSession, Object message) throws Exception { String messageString = (String) message; SessionID remoteSessionID = MessageUtils.getReverseSessionID(messageString); Session quickFixSession = findQFSession(ioSession, remoteSessionID); if (quickFixSession != null) { final Log sessionLog = quickFixSession.getLog(); sessionLog.onIncoming(messageString); try { Message fixMessage = parse(quickFixSession, messageString); processMessage(ioSession, fixMessage); } catch (InvalidMessage e) { if (MsgType.LOGON.equals(MessageUtils.getMessageType(messageString))) { sessionLog.onErrorEvent("Invalid LOGON message, disconnecting: " + e.getMessage()); ioSession.closeNow(); } else { sessionLog.onErrorEvent("Invalid message: " + e.getMessage()); } } } else { log.error("Disconnecting; received message for unknown session: " + messageString); ioSession.closeNow(); } }
public boolean isAdmin() { if (header.isSetField(MsgType.FIELD)) { try { final String msgType = header.getString(MsgType.FIELD); return MessageUtils.isAdminMessage(msgType); } catch (final FieldNotFound e) { // shouldn't happen } } return false; }
private static boolean isMessageType(String message, String msgType) { try { return msgType.equals(getMessageType(message)); } catch (final InvalidMessage e) { return false; } }
private static ApplVerID getApplVerID(Session session, String messageString) throws InvalidMessage { ApplVerID applVerID = null; final String applVerIdString = getStringField(messageString, ApplVerID.FIELD); if (applVerIdString != null) { applVerID = new ApplVerID(applVerIdString); } if (applVerID == null) { applVerID = session.getTargetDefaultApplicationVersionID(); } if (applVerID == null && isLogon(messageString)) { final String defaultApplVerIdString = getStringField(messageString, DefaultApplVerID.FIELD); if (defaultApplVerIdString != null) { applVerID = new ApplVerID(defaultApplVerIdString); } } if (applVerID == null) { throw new InvalidMessage("Can't determine ApplVerID for message"); } return applVerID; }
@Override public Message create(String beginString, ApplVerID applVerID, String msgType) { MessageFactory messageFactory = messageFactories.get(beginString); if (beginString.equals(BEGINSTRING_FIXT11) && !MessageUtils.isAdminMessage(msgType)) { if (applVerID == null) { applVerID = new ApplVerID(defaultApplVerID.getValue()); } messageFactory = messageFactories.get(MessageUtils.toBeginString(applVerID)); } if (messageFactory != null) { return messageFactory.create(beginString, applVerID, msgType); } Message message = new Message(); message.getHeader().setString(MsgType.FIELD, msgType); return message; }
public final void onIncoming(String message) { if (!logHeartbeats && MessageUtils.isHeartbeat(message)) { return; } logIncoming(message); }
@Override protected void processMessage(IoSession protocolSession, Message message) throws Exception { if (message.getHeader().getString(MsgType.FIELD).equals(MsgType.LOGON)) { final SessionID sessionID = MessageUtils.getReverseSessionID(message); if (sessionID.isFIXT()) { if (message.isSetField(DefaultApplVerID.FIELD)) { final ApplVerID applVerID = new ApplVerID(message.getString(DefaultApplVerID.FIELD)); quickfixSession.setTargetDefaultApplicationVersionID(applVerID); quickfixSession.getLog().onEvent("Setting DefaultApplVerID (" + DefaultApplVerID.FIELD + "=" + applVerID.getValue() + ") from Logon"); } } } eventHandlingStrategy.onMessage(quickfixSession, message); }
final String beginString = getStringField(messageString, BeginString.FIELD); final String msgType = getMessageType(messageString); applVerID = getApplVerID(session, messageString); } else { applVerID = toApplVerID(beginString); final DataDictionary payloadDictionary = MessageUtils.isAdminMessage(msgType) ? sessionDataDictionary : applicationDataDictionary;
private ApplVerID toApplVerID(String value) { if (isApplVerIdEnum(value)) { return new ApplVerID(value); } else { // value should be a beginString return MessageUtils.toApplVerID(value); } }
@Override public void messageReceived(IoSession ioSession, Object message) throws Exception { String messageString = (String) message; SessionID remoteSessionID = MessageUtils.getReverseSessionID(messageString); Session quickFixSession = findQFSession(ioSession, remoteSessionID); if (quickFixSession != null) { sessionLog.onIncoming(messageString); try { Message fixMessage = parse(quickFixSession, messageString); processMessage(ioSession, fixMessage); } catch (InvalidMessage e) { if (MessageUtils.isLogon(messageString)) { sessionLog.onErrorEvent("Invalid LOGON message, disconnecting: " + e.getMessage()); ioSession.closeNow();
public static SessionID getReverseSessionID(String messageString) { return new SessionID(getStringField(messageString, BeginString.FIELD), getStringField( messageString, TargetCompID.FIELD), getStringField(messageString, TargetSubID.FIELD), getStringField(messageString, TargetLocationID.FIELD), getStringField(messageString, SenderCompID.FIELD), getStringField(messageString, SenderSubID.FIELD), getStringField(messageString, SenderLocationID.FIELD), null); }