
uk.co.real_logic.artio.fixt.decoder.LogonDecoder Maven / Gradle / Ivy
The newest version!
/* Generated Fix Gateway message codec */
package uk.co.real_logic.artio.fixt.decoder;
import uk.co.real_logic.artio.decoder.AbstractLogonDecoder;
import org.agrona.AsciiNumberFormatException;
import uk.co.real_logic.artio.dictionary.Generated;
import org.agrona.MutableDirectBuffer;
import org.agrona.AsciiSequenceView;
import static uk.co.real_logic.artio.dictionary.generation.CodecUtil.*;
import static uk.co.real_logic.artio.dictionary.SessionConstants.*;
import uk.co.real_logic.artio.builder.Decoder;
import uk.co.real_logic.artio.fixt.decoder.HeaderDecoder;
import uk.co.real_logic.artio.fixt.decoder.TrailerDecoder;
import uk.co.real_logic.artio.fields.ReadOnlyDecimalFloat;
import uk.co.real_logic.artio.fields.DecimalFloat;
import uk.co.real_logic.artio.util.MutableAsciiBuffer;
import uk.co.real_logic.artio.util.AsciiBuffer;
import uk.co.real_logic.artio.fields.LocalMktDateEncoder;
import uk.co.real_logic.artio.fields.UtcTimestampEncoder;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import uk.co.real_logic.artio.dictionary.CharArraySet;
import org.agrona.collections.IntHashSet;
import org.agrona.collections.IntHashSet.IntIterator;
import uk.co.real_logic.artio.EncodingException;
import uk.co.real_logic.artio.dictionary.CharArrayWrapper;
import uk.co.real_logic.artio.builder.Encoder;
import uk.co.real_logic.artio.builder.CommonDecoderImpl;
import static java.nio.charset.StandardCharsets.US_ASCII;
import static uk.co.real_logic.artio.builder.Validation.CODEC_VALIDATION_ENABLED;
import static uk.co.real_logic.artio.builder.RejectUnknownField.CODEC_REJECT_UNKNOWN_FIELD_ENABLED;
import static uk.co.real_logic.artio.builder.RejectUnknownEnumValue.CODEC_REJECT_UNKNOWN_ENUM_VALUE_ENABLED;
import uk.co.real_logic.artio.fixt.*;
import uk.co.real_logic.artio.fixt.builder.LogonEncoder;
import uk.co.real_logic.artio.fixt.builder.MsgTypeGrpEncoder;
import static uk.co.real_logic.artio.fixt.builder.MsgTypeGrpEncoder.MsgTypesGroupEncoder;
@Generated("uk.co.real_logic.artio")
public class LogonDecoder extends CommonDecoderImpl implements MsgTypeGrpDecoder, MessageDecoder, AbstractLogonDecoder
{
public final IntHashSet REQUIRED_FIELDS = new IntHashSet(6);
{
if (CODEC_VALIDATION_ENABLED)
{
REQUIRED_FIELDS.add(Constants.ENCRYPT_METHOD);
REQUIRED_FIELDS.add(Constants.HEART_BT_INT);
REQUIRED_FIELDS.add(Constants.DEFAULT_APPL_VER_ID);
}
}
public final IntHashSet GROUP_FIELDS = new IntHashSet(46);
{
if (CODEC_VALIDATION_ENABLED)
{
GROUP_FIELDS.add(Constants.ENCRYPT_METHOD);
GROUP_FIELDS.add(Constants.HEART_BT_INT);
GROUP_FIELDS.add(Constants.RAW_DATA_LENGTH);
GROUP_FIELDS.add(Constants.RAW_DATA);
GROUP_FIELDS.add(Constants.RESET_SEQ_NUM_FLAG);
GROUP_FIELDS.add(Constants.NEXT_EXPECTED_MSG_SEQ_NUM);
GROUP_FIELDS.add(Constants.MAX_MESSAGE_SIZE);
GROUP_FIELDS.add(Constants.TEST_MESSAGE_INDICATOR);
GROUP_FIELDS.add(Constants.USERNAME);
GROUP_FIELDS.add(Constants.PASSWORD);
GROUP_FIELDS.add(Constants.NEW_PASSWORD);
GROUP_FIELDS.add(Constants.ENCRYPTED_PASSWORD_METHOD);
GROUP_FIELDS.add(Constants.ENCRYPTED_PASSWORD_LEN);
GROUP_FIELDS.add(Constants.ENCRYPTED_PASSWORD);
GROUP_FIELDS.add(Constants.ENCRYPTED_NEW_PASSWORD_LEN);
GROUP_FIELDS.add(Constants.ENCRYPTED_NEW_PASSWORD);
GROUP_FIELDS.add(Constants.SESSION_STATUS);
GROUP_FIELDS.add(Constants.DEFAULT_APPL_VER_ID);
GROUP_FIELDS.add(Constants.DEFAULT_APPL_EXT_ID);
GROUP_FIELDS.add(Constants.DEFAULT_CSTM_APPL_VER_ID);
GROUP_FIELDS.add(Constants.TEXT);
GROUP_FIELDS.add(Constants.ENCODED_TEXT_LEN);
GROUP_FIELDS.add(Constants.ENCODED_TEXT);
}
}
private final IntHashSet alreadyVisitedFields = new IntHashSet(46);
private final IntHashSet unknownFields = new IntHashSet(10);
private final IntHashSet missingRequiredFields = new IntHashSet(6);
public boolean validate()
{
if (rejectReason != Decoder.NO_ERROR)
{
return false;
}
final IntIterator missingFieldsIterator = missingRequiredFields.iterator();
final IntIterator unknownFieldsIterator = unknownFields.iterator();
if (CODEC_REJECT_UNKNOWN_FIELD_ENABLED && unknownFieldsIterator.hasNext())
{
invalidTagId = unknownFieldsIterator.nextValue();
rejectReason = Constants.ALL_FIELDS.contains(invalidTagId) ? 2 : 0;
return false;
}
if (!header.validate())
{
invalidTagId = header.invalidTagId();
rejectReason = header.rejectReason();
return false;
}
else if (!trailer.validate())
{
invalidTagId = trailer.invalidTagId();
rejectReason = trailer.rejectReason();
return false;
}
if (missingFieldsIterator.hasNext())
{
invalidTagId = missingFieldsIterator.nextValue();
rejectReason = 1;
return false;
}
if (CODEC_REJECT_UNKNOWN_ENUM_VALUE_ENABLED && !EncryptMethod.isValid(encryptMethod()))
{
invalidTagId = 98;
rejectReason = 5;
return false;
}
if (hasSessionStatus)
{
if (CODEC_REJECT_UNKNOWN_ENUM_VALUE_ENABLED && !SessionStatus.isValid(sessionStatus()))
{
invalidTagId = 1409;
rejectReason = 5;
return false;
}
}
if (hasNoMsgTypesGroupCounter)
{
{
int count = 0;
final MsgTypesGroupIterator iterator = msgTypesGroupIterator.iterator();
for (final MsgTypesGroupDecoder group : iterator)
{
count++; if (!group.validate())
{
invalidTagId = group.invalidTagId();
rejectReason = group.rejectReason();
return false;
}
}
if (count != iterator.numberFieldValue())
{
invalidTagId = 384;
rejectReason = 16;
return false;
}
}
}
return true;
}
public static final long MESSAGE_TYPE = 65L;
public static final String MESSAGE_TYPE_AS_STRING = "A";
public static final char[] MESSAGE_TYPE_CHARS = MESSAGE_TYPE_AS_STRING.toCharArray();
public static final byte[] MESSAGE_TYPE_BYTES = MESSAGE_TYPE_AS_STRING.getBytes(US_ASCII);
public final IntHashSet messageFields = new IntHashSet(124);
{
messageFields.add(Constants.BEGIN_STRING);
messageFields.add(Constants.BODY_LENGTH);
messageFields.add(Constants.MSG_TYPE);
messageFields.add(Constants.APPL_VER_ID);
messageFields.add(Constants.APPL_EXT_ID);
messageFields.add(Constants.CSTM_APPL_VER_ID);
messageFields.add(Constants.SENDER_COMP_ID);
messageFields.add(Constants.TARGET_COMP_ID);
messageFields.add(Constants.ON_BEHALF_OF_COMP_ID);
messageFields.add(Constants.DELIVER_TO_COMP_ID);
messageFields.add(Constants.SECURE_DATA_LEN);
messageFields.add(Constants.SECURE_DATA);
messageFields.add(Constants.MSG_SEQ_NUM);
messageFields.add(Constants.SENDER_SUB_ID);
messageFields.add(Constants.SENDER_LOCATION_ID);
messageFields.add(Constants.TARGET_SUB_ID);
messageFields.add(Constants.TARGET_LOCATION_ID);
messageFields.add(Constants.ON_BEHALF_OF_SUB_ID);
messageFields.add(Constants.ON_BEHALF_OF_LOCATION_ID);
messageFields.add(Constants.DELIVER_TO_SUB_ID);
messageFields.add(Constants.DELIVER_TO_LOCATION_ID);
messageFields.add(Constants.POSS_DUP_FLAG);
messageFields.add(Constants.POSS_RESEND);
messageFields.add(Constants.SENDING_TIME);
messageFields.add(Constants.ORIG_SENDING_TIME);
messageFields.add(Constants.XML_DATA_LEN);
messageFields.add(Constants.XML_DATA);
messageFields.add(Constants.MESSAGE_ENCODING);
messageFields.add(Constants.LAST_MSG_SEQ_NUM_PROCESSED);
messageFields.add(Constants.ENCRYPT_METHOD);
messageFields.add(Constants.HEART_BT_INT);
messageFields.add(Constants.RAW_DATA_LENGTH);
messageFields.add(Constants.RAW_DATA);
messageFields.add(Constants.RESET_SEQ_NUM_FLAG);
messageFields.add(Constants.NEXT_EXPECTED_MSG_SEQ_NUM);
messageFields.add(Constants.MAX_MESSAGE_SIZE);
messageFields.add(Constants.NO_MSG_TYPES_GROUP_COUNTER);
messageFields.add(Constants.REF_MSG_TYPE);
messageFields.add(Constants.MSG_DIRECTION);
messageFields.add(Constants.REF_APPL_VER_ID);
messageFields.add(Constants.REF_APPL_EXT_ID);
messageFields.add(Constants.REF_CSTM_APPL_VER_ID);
messageFields.add(Constants.DEFAULT_VER_INDICATOR);
messageFields.add(Constants.TEST_MESSAGE_INDICATOR);
messageFields.add(Constants.USERNAME);
messageFields.add(Constants.PASSWORD);
messageFields.add(Constants.NEW_PASSWORD);
messageFields.add(Constants.ENCRYPTED_PASSWORD_METHOD);
messageFields.add(Constants.ENCRYPTED_PASSWORD_LEN);
messageFields.add(Constants.ENCRYPTED_PASSWORD);
messageFields.add(Constants.ENCRYPTED_NEW_PASSWORD_LEN);
messageFields.add(Constants.ENCRYPTED_NEW_PASSWORD);
messageFields.add(Constants.SESSION_STATUS);
messageFields.add(Constants.DEFAULT_APPL_VER_ID);
messageFields.add(Constants.DEFAULT_APPL_EXT_ID);
messageFields.add(Constants.DEFAULT_CSTM_APPL_VER_ID);
messageFields.add(Constants.TEXT);
messageFields.add(Constants.ENCODED_TEXT_LEN);
messageFields.add(Constants.ENCODED_TEXT);
messageFields.add(Constants.SIGNATURE_LENGTH);
messageFields.add(Constants.SIGNATURE);
messageFields.add(Constants.CHECK_SUM);
}
private final TrailerDecoder trailer = new TrailerDecoder();
public TrailerDecoder trailer()
{
return trailer;
}
private final HeaderDecoder header = new HeaderDecoder(trailer);
public HeaderDecoder header()
{
return header;
}
private int encryptMethod = MISSING_INT;
/* EncryptMethod = 98 */
public int encryptMethod()
{
return encryptMethod;
}
private final CharArrayWrapper encryptMethodWrapper = new CharArrayWrapper();
/* EncryptMethod = 98 */
public EncryptMethod encryptMethodAsEnum()
{
return EncryptMethod.decode(encryptMethod);
}
private int heartBtInt = MISSING_INT;
/* HeartBtInt = 108 */
public int heartBtInt()
{
return heartBtInt;
}
private int rawDataLength = MISSING_INT;
private boolean hasRawDataLength;
/* RawDataLength = 95 */
public int rawDataLength()
{
if (!hasRawDataLength)
{
throw new IllegalArgumentException("No value for optional field: RawDataLength");
}
return rawDataLength;
}
public boolean hasRawDataLength()
{
return hasRawDataLength;
}
private byte[] rawData = new byte[1];
private boolean hasRawData;
/* RawData = 96 */
public byte[] rawData()
{
if (!hasRawData)
{
throw new IllegalArgumentException("No value for optional field: RawData");
}
return rawData;
}
public boolean hasRawData()
{
return hasRawData;
}
private boolean resetSeqNumFlag;
private boolean hasResetSeqNumFlag;
/* ResetSeqNumFlag = 141 */
public boolean resetSeqNumFlag()
{
if (!hasResetSeqNumFlag)
{
throw new IllegalArgumentException("No value for optional field: ResetSeqNumFlag");
}
return resetSeqNumFlag;
}
public boolean hasResetSeqNumFlag()
{
return hasResetSeqNumFlag;
}
private int nextExpectedMsgSeqNum = MISSING_INT;
private boolean hasNextExpectedMsgSeqNum;
/* NextExpectedMsgSeqNum = 789 */
public int nextExpectedMsgSeqNum()
{
if (!hasNextExpectedMsgSeqNum)
{
throw new IllegalArgumentException("No value for optional field: NextExpectedMsgSeqNum");
}
return nextExpectedMsgSeqNum;
}
public boolean hasNextExpectedMsgSeqNum()
{
return hasNextExpectedMsgSeqNum;
}
private int maxMessageSize = MISSING_INT;
private boolean hasMaxMessageSize;
/* MaxMessageSize = 383 */
public int maxMessageSize()
{
if (!hasMaxMessageSize)
{
throw new IllegalArgumentException("No value for optional field: MaxMessageSize");
}
return maxMessageSize;
}
public boolean hasMaxMessageSize()
{
return hasMaxMessageSize;
}
private MsgTypesGroupDecoder msgTypesGroup = null;
public MsgTypesGroupDecoder msgTypesGroup()
{
return msgTypesGroup;
}
private int noMsgTypesGroupCounter = MISSING_INT;
private boolean hasNoMsgTypesGroupCounter;
/* NoMsgTypesGroupCounter = 384 */
public int noMsgTypesGroupCounter()
{
if (!hasNoMsgTypesGroupCounter)
{
throw new IllegalArgumentException("No value for optional field: NoMsgTypesGroupCounter");
}
return noMsgTypesGroupCounter;
}
public boolean hasNoMsgTypesGroupCounter()
{
return hasNoMsgTypesGroupCounter;
}
private MsgTypesGroupIterator msgTypesGroupIterator = new MsgTypesGroupIterator(this);
public MsgTypesGroupIterator msgTypesGroupIterator()
{
return msgTypesGroupIterator.iterator();
}
private boolean testMessageIndicator;
private boolean hasTestMessageIndicator;
/* TestMessageIndicator = 464 */
public boolean testMessageIndicator()
{
if (!hasTestMessageIndicator)
{
throw new IllegalArgumentException("No value for optional field: TestMessageIndicator");
}
return testMessageIndicator;
}
public boolean hasTestMessageIndicator()
{
return hasTestMessageIndicator;
}
private char[] username = new char[1];
private boolean hasUsername;
/* Username = 553 */
public char[] username()
{
if (!hasUsername)
{
throw new IllegalArgumentException("No value for optional field: Username");
}
return username;
}
public boolean hasUsername()
{
return hasUsername;
}
private int usernameOffset;
private int usernameLength;
/* Username = 553 */
public int usernameLength()
{
if (!hasUsername)
{
throw new IllegalArgumentException("No value for optional field: Username");
}
return usernameLength;
}
/* Username = 553 */
public String usernameAsString()
{
return hasUsername ? new String(username, 0, usernameLength) : null;
}
/* Username = 553 */
public AsciiSequenceView username(final AsciiSequenceView view)
{
if (!hasUsername)
{
throw new IllegalArgumentException("No value for optional field: Username");
}
return view.wrap(buffer, usernameOffset, usernameLength);
}
private final CharArrayWrapper usernameWrapper = new CharArrayWrapper();
private char[] password = new char[1];
private boolean hasPassword;
/* Password = 554 */
public char[] password()
{
if (!hasPassword)
{
throw new IllegalArgumentException("No value for optional field: Password");
}
return password;
}
public boolean hasPassword()
{
return hasPassword;
}
private int passwordOffset;
private int passwordLength;
/* Password = 554 */
public int passwordLength()
{
if (!hasPassword)
{
throw new IllegalArgumentException("No value for optional field: Password");
}
return passwordLength;
}
/* Password = 554 */
public String passwordAsString()
{
return hasPassword ? new String(password, 0, passwordLength) : null;
}
/* Password = 554 */
public AsciiSequenceView password(final AsciiSequenceView view)
{
if (!hasPassword)
{
throw new IllegalArgumentException("No value for optional field: Password");
}
return view.wrap(buffer, passwordOffset, passwordLength);
}
private final CharArrayWrapper passwordWrapper = new CharArrayWrapper();
private char[] newPassword = new char[1];
private boolean hasNewPassword;
/* NewPassword = 925 */
public char[] newPassword()
{
if (!hasNewPassword)
{
throw new IllegalArgumentException("No value for optional field: NewPassword");
}
return newPassword;
}
public boolean hasNewPassword()
{
return hasNewPassword;
}
private int newPasswordOffset;
private int newPasswordLength;
/* NewPassword = 925 */
public int newPasswordLength()
{
if (!hasNewPassword)
{
throw new IllegalArgumentException("No value for optional field: NewPassword");
}
return newPasswordLength;
}
/* NewPassword = 925 */
public String newPasswordAsString()
{
return hasNewPassword ? new String(newPassword, 0, newPasswordLength) : null;
}
/* NewPassword = 925 */
public AsciiSequenceView newPassword(final AsciiSequenceView view)
{
if (!hasNewPassword)
{
throw new IllegalArgumentException("No value for optional field: NewPassword");
}
return view.wrap(buffer, newPasswordOffset, newPasswordLength);
}
private final CharArrayWrapper newPasswordWrapper = new CharArrayWrapper();
private int encryptedPasswordMethod = MISSING_INT;
private boolean hasEncryptedPasswordMethod;
/* EncryptedPasswordMethod = 1400 */
public int encryptedPasswordMethod()
{
if (!hasEncryptedPasswordMethod)
{
throw new IllegalArgumentException("No value for optional field: EncryptedPasswordMethod");
}
return encryptedPasswordMethod;
}
public boolean hasEncryptedPasswordMethod()
{
return hasEncryptedPasswordMethod;
}
private int encryptedPasswordLen = MISSING_INT;
private boolean hasEncryptedPasswordLen;
/* EncryptedPasswordLen = 1401 */
public int encryptedPasswordLen()
{
if (!hasEncryptedPasswordLen)
{
throw new IllegalArgumentException("No value for optional field: EncryptedPasswordLen");
}
return encryptedPasswordLen;
}
public boolean hasEncryptedPasswordLen()
{
return hasEncryptedPasswordLen;
}
private byte[] encryptedPassword = new byte[1];
private boolean hasEncryptedPassword;
/* EncryptedPassword = 1402 */
public byte[] encryptedPassword()
{
if (!hasEncryptedPassword)
{
throw new IllegalArgumentException("No value for optional field: EncryptedPassword");
}
return encryptedPassword;
}
public boolean hasEncryptedPassword()
{
return hasEncryptedPassword;
}
private int encryptedNewPasswordLen = MISSING_INT;
private boolean hasEncryptedNewPasswordLen;
/* EncryptedNewPasswordLen = 1403 */
public int encryptedNewPasswordLen()
{
if (!hasEncryptedNewPasswordLen)
{
throw new IllegalArgumentException("No value for optional field: EncryptedNewPasswordLen");
}
return encryptedNewPasswordLen;
}
public boolean hasEncryptedNewPasswordLen()
{
return hasEncryptedNewPasswordLen;
}
private byte[] encryptedNewPassword = new byte[1];
private boolean hasEncryptedNewPassword;
/* EncryptedNewPassword = 1404 */
public byte[] encryptedNewPassword()
{
if (!hasEncryptedNewPassword)
{
throw new IllegalArgumentException("No value for optional field: EncryptedNewPassword");
}
return encryptedNewPassword;
}
public boolean hasEncryptedNewPassword()
{
return hasEncryptedNewPassword;
}
private int sessionStatus = MISSING_INT;
private boolean hasSessionStatus;
/* SessionStatus = 1409 */
public int sessionStatus()
{
if (!hasSessionStatus)
{
throw new IllegalArgumentException("No value for optional field: SessionStatus");
}
return sessionStatus;
}
public boolean hasSessionStatus()
{
return hasSessionStatus;
}
private final CharArrayWrapper sessionStatusWrapper = new CharArrayWrapper();
/* SessionStatus = 1409 */
public SessionStatus sessionStatusAsEnum()
{
if (!hasSessionStatus)
return SessionStatus.NULL_VAL;
return SessionStatus.decode(sessionStatus);
}
private char[] defaultApplVerID = new char[1];
/* DefaultApplVerID = 1137 */
public char[] defaultApplVerID()
{
return defaultApplVerID;
}
private int defaultApplVerIDOffset;
private int defaultApplVerIDLength;
/* DefaultApplVerID = 1137 */
public int defaultApplVerIDLength()
{
return defaultApplVerIDLength;
}
/* DefaultApplVerID = 1137 */
public String defaultApplVerIDAsString()
{
return new String(defaultApplVerID, 0, defaultApplVerIDLength);
}
/* DefaultApplVerID = 1137 */
public AsciiSequenceView defaultApplVerID(final AsciiSequenceView view)
{
return view.wrap(buffer, defaultApplVerIDOffset, defaultApplVerIDLength);
}
private final CharArrayWrapper defaultApplVerIDWrapper = new CharArrayWrapper();
private int defaultApplExtID = MISSING_INT;
private boolean hasDefaultApplExtID;
/* DefaultApplExtID = 1407 */
public int defaultApplExtID()
{
if (!hasDefaultApplExtID)
{
throw new IllegalArgumentException("No value for optional field: DefaultApplExtID");
}
return defaultApplExtID;
}
public boolean hasDefaultApplExtID()
{
return hasDefaultApplExtID;
}
private char[] defaultCstmApplVerID = new char[1];
private boolean hasDefaultCstmApplVerID;
/* DefaultCstmApplVerID = 1408 */
public char[] defaultCstmApplVerID()
{
if (!hasDefaultCstmApplVerID)
{
throw new IllegalArgumentException("No value for optional field: DefaultCstmApplVerID");
}
return defaultCstmApplVerID;
}
public boolean hasDefaultCstmApplVerID()
{
return hasDefaultCstmApplVerID;
}
private int defaultCstmApplVerIDOffset;
private int defaultCstmApplVerIDLength;
/* DefaultCstmApplVerID = 1408 */
public int defaultCstmApplVerIDLength()
{
if (!hasDefaultCstmApplVerID)
{
throw new IllegalArgumentException("No value for optional field: DefaultCstmApplVerID");
}
return defaultCstmApplVerIDLength;
}
/* DefaultCstmApplVerID = 1408 */
public String defaultCstmApplVerIDAsString()
{
return hasDefaultCstmApplVerID ? new String(defaultCstmApplVerID, 0, defaultCstmApplVerIDLength) : null;
}
/* DefaultCstmApplVerID = 1408 */
public AsciiSequenceView defaultCstmApplVerID(final AsciiSequenceView view)
{
if (!hasDefaultCstmApplVerID)
{
throw new IllegalArgumentException("No value for optional field: DefaultCstmApplVerID");
}
return view.wrap(buffer, defaultCstmApplVerIDOffset, defaultCstmApplVerIDLength);
}
private final CharArrayWrapper defaultCstmApplVerIDWrapper = new CharArrayWrapper();
private char[] text = new char[1];
private boolean hasText;
/* Text = 58 */
public char[] text()
{
if (!hasText)
{
throw new IllegalArgumentException("No value for optional field: Text");
}
return text;
}
public boolean hasText()
{
return hasText;
}
private int textOffset;
private int textLength;
/* Text = 58 */
public int textLength()
{
if (!hasText)
{
throw new IllegalArgumentException("No value for optional field: Text");
}
return textLength;
}
/* Text = 58 */
public String textAsString()
{
return hasText ? new String(text, 0, textLength) : null;
}
/* Text = 58 */
public AsciiSequenceView text(final AsciiSequenceView view)
{
if (!hasText)
{
throw new IllegalArgumentException("No value for optional field: Text");
}
return view.wrap(buffer, textOffset, textLength);
}
private final CharArrayWrapper textWrapper = new CharArrayWrapper();
private int encodedTextLen = MISSING_INT;
private boolean hasEncodedTextLen;
/* EncodedTextLen = 354 */
public int encodedTextLen()
{
if (!hasEncodedTextLen)
{
throw new IllegalArgumentException("No value for optional field: EncodedTextLen");
}
return encodedTextLen;
}
public boolean hasEncodedTextLen()
{
return hasEncodedTextLen;
}
private byte[] encodedText = new byte[1];
private boolean hasEncodedText;
/* EncodedText = 355 */
public byte[] encodedText()
{
if (!hasEncodedText)
{
throw new IllegalArgumentException("No value for optional field: EncodedText");
}
return encodedText;
}
public boolean hasEncodedText()
{
return hasEncodedText;
}
public int cancelOnDisconnectType()
{
throw new UnsupportedOperationException();
}
public boolean hasCancelOnDisconnectType()
{
throw new UnsupportedOperationException();
}
public int cODTimeoutWindow()
{
throw new UnsupportedOperationException();
}
public boolean hasCODTimeoutWindow()
{
throw new UnsupportedOperationException();
}
public boolean supportsUsername()
{
return true;
}
public boolean supportsPassword()
{
return true;
}
public boolean supportsCancelOnDisconnectType()
{
return false;
}
public boolean supportsCODTimeoutWindow()
{
return false;
}
public int decode(final AsciiBuffer buffer, final int offset, final int length)
{
// Decode Logon
int seenFieldCount = 0;
if (CODEC_VALIDATION_ENABLED)
{
missingRequiredFields.copy(REQUIRED_FIELDS);
alreadyVisitedFields.clear();
}
this.buffer = buffer;
final int end = offset + length;
int position = offset;
int positionIter = position;
position += header.decode(buffer, position, length);
int tag;
while (position < end)
{
final int equalsPosition = buffer.scan(position, end, '=');
if (equalsPosition == AsciiBuffer.UNKNOWN_INDEX)
{
return position;
}
tag = buffer.getInt(position, equalsPosition);
final int valueOffset = equalsPosition + 1;
int endOfField = buffer.scan(valueOffset, end, START_OF_HEADER);
if (endOfField == AsciiBuffer.UNKNOWN_INDEX)
{
rejectReason = 5;
break;
}
final int valueLength = endOfField - valueOffset;
if (CODEC_VALIDATION_ENABLED)
{
if (tag <= 0)
{
invalidTagId = tag;
rejectReason = 0;
}
else if (valueLength == 0)
{
invalidTagId = tag;
rejectReason = 4;
}
if (!alreadyVisitedFields.add(tag))
{
invalidTagId = tag;
rejectReason = 13;
}
missingRequiredFields.remove(tag);
seenFieldCount++;
}
switch (tag)
{
case Constants.ENCRYPT_METHOD:
encryptMethod = getInt(buffer, valueOffset, endOfField, 98, CODEC_VALIDATION_ENABLED);
break;
case Constants.HEART_BT_INT:
heartBtInt = getInt(buffer, valueOffset, endOfField, 108, CODEC_VALIDATION_ENABLED);
break;
case Constants.RAW_DATA_LENGTH:
hasRawDataLength = true;
rawDataLength = getInt(buffer, valueOffset, endOfField, 95, CODEC_VALIDATION_ENABLED);
break;
case Constants.RAW_DATA:
hasRawData = true;
rawData = buffer.getBytes(rawData, valueOffset, rawDataLength);
endOfField = valueOffset + rawDataLength;
break;
case Constants.RESET_SEQ_NUM_FLAG:
hasResetSeqNumFlag = true;
resetSeqNumFlag = buffer.getBoolean(valueOffset);
break;
case Constants.NEXT_EXPECTED_MSG_SEQ_NUM:
hasNextExpectedMsgSeqNum = true;
nextExpectedMsgSeqNum = getInt(buffer, valueOffset, endOfField, 789, CODEC_VALIDATION_ENABLED);
break;
case Constants.MAX_MESSAGE_SIZE:
hasMaxMessageSize = true;
maxMessageSize = getInt(buffer, valueOffset, endOfField, 383, CODEC_VALIDATION_ENABLED);
break;
case Constants.NO_MSG_TYPES_GROUP_COUNTER:
hasNoMsgTypesGroupCounter = true;
noMsgTypesGroupCounter = getInt(buffer, valueOffset, endOfField, 384, CODEC_VALIDATION_ENABLED);
if (msgTypesGroup == null)
{
msgTypesGroup = new MsgTypesGroupDecoder(trailer, messageFields);
}
MsgTypesGroupDecoder msgTypesGroupCurrent = msgTypesGroup;
position = endOfField + 1;
final int noMsgTypesGroupCounter = this.noMsgTypesGroupCounter;
for (int i = 0; i < noMsgTypesGroupCounter && position < end; i++)
{
if (msgTypesGroupCurrent != null)
{
positionIter = msgTypesGroupCurrent.decode(buffer, position, end - position);
if (positionIter == 0 && CODEC_VALIDATION_ENABLED)
{
invalidTagId = tag;
rejectReason = 16;
break;
}
else
{
position += positionIter;
}
msgTypesGroupCurrent = msgTypesGroupCurrent.next();
}
}
if (CODEC_VALIDATION_ENABLED)
{
final int checkEqualsPosition = buffer.scan(position, end, '=');
if (checkEqualsPosition != AsciiBuffer.UNKNOWN_INDEX)
{
final int checkTag = buffer.getInt(position, checkEqualsPosition);
if (msgTypesGroup.ALL_GROUP_FIELDS.contains(checkTag))
{
invalidTagId = tag;
rejectReason = 16;
while (msgTypesGroupCurrent != null)
{
position += msgTypesGroupCurrent.decode(buffer, position, end - position);
msgTypesGroupCurrent = msgTypesGroupCurrent.next();
}
return position - offset;
}
}
}
break;
case Constants.TEST_MESSAGE_INDICATOR:
hasTestMessageIndicator = true;
testMessageIndicator = buffer.getBoolean(valueOffset);
break;
case Constants.USERNAME:
hasUsername = true;
username = buffer.getChars(username, valueOffset, valueLength);
usernameOffset = valueOffset;
usernameLength = valueLength;
break;
case Constants.PASSWORD:
hasPassword = true;
password = buffer.getChars(password, valueOffset, valueLength);
passwordOffset = valueOffset;
passwordLength = valueLength;
break;
case Constants.NEW_PASSWORD:
hasNewPassword = true;
newPassword = buffer.getChars(newPassword, valueOffset, valueLength);
newPasswordOffset = valueOffset;
newPasswordLength = valueLength;
break;
case Constants.ENCRYPTED_PASSWORD_METHOD:
hasEncryptedPasswordMethod = true;
encryptedPasswordMethod = getInt(buffer, valueOffset, endOfField, 1400, CODEC_VALIDATION_ENABLED);
break;
case Constants.ENCRYPTED_PASSWORD_LEN:
hasEncryptedPasswordLen = true;
encryptedPasswordLen = getInt(buffer, valueOffset, endOfField, 1401, CODEC_VALIDATION_ENABLED);
break;
case Constants.ENCRYPTED_PASSWORD:
hasEncryptedPassword = true;
encryptedPassword = buffer.getBytes(encryptedPassword, valueOffset, encryptedPasswordLen);
endOfField = valueOffset + encryptedPasswordLen;
break;
case Constants.ENCRYPTED_NEW_PASSWORD_LEN:
hasEncryptedNewPasswordLen = true;
encryptedNewPasswordLen = getInt(buffer, valueOffset, endOfField, 1403, CODEC_VALIDATION_ENABLED);
break;
case Constants.ENCRYPTED_NEW_PASSWORD:
hasEncryptedNewPassword = true;
encryptedNewPassword = buffer.getBytes(encryptedNewPassword, valueOffset, encryptedNewPasswordLen);
endOfField = valueOffset + encryptedNewPasswordLen;
break;
case Constants.SESSION_STATUS:
hasSessionStatus = true;
sessionStatus = getInt(buffer, valueOffset, endOfField, 1409, CODEC_VALIDATION_ENABLED);
break;
case Constants.DEFAULT_APPL_VER_ID:
defaultApplVerID = buffer.getChars(defaultApplVerID, valueOffset, valueLength);
defaultApplVerIDOffset = valueOffset;
defaultApplVerIDLength = valueLength;
break;
case Constants.DEFAULT_APPL_EXT_ID:
hasDefaultApplExtID = true;
defaultApplExtID = getInt(buffer, valueOffset, endOfField, 1407, CODEC_VALIDATION_ENABLED);
break;
case Constants.DEFAULT_CSTM_APPL_VER_ID:
hasDefaultCstmApplVerID = true;
defaultCstmApplVerID = buffer.getChars(defaultCstmApplVerID, valueOffset, valueLength);
defaultCstmApplVerIDOffset = valueOffset;
defaultCstmApplVerIDLength = valueLength;
break;
case Constants.TEXT:
hasText = true;
text = buffer.getChars(text, valueOffset, valueLength);
textOffset = valueOffset;
textLength = valueLength;
break;
case Constants.ENCODED_TEXT_LEN:
hasEncodedTextLen = true;
encodedTextLen = getInt(buffer, valueOffset, endOfField, 354, CODEC_VALIDATION_ENABLED);
break;
case Constants.ENCODED_TEXT:
hasEncodedText = true;
encodedText = buffer.getBytes(encodedText, valueOffset, encodedTextLen);
endOfField = valueOffset + encodedTextLen;
break;
default:
if (!CODEC_REJECT_UNKNOWN_FIELD_ENABLED)
{
alreadyVisitedFields.remove(tag);
}
else
{
if (!(trailer.REQUIRED_FIELDS.contains(tag)))
{
unknownFields.add(tag);
}
}
if (CODEC_REJECT_UNKNOWN_FIELD_ENABLED || (trailer.REQUIRED_FIELDS.contains(tag)))
{
position += trailer.decode(buffer, position, end - position);
return position - offset;
}
}
if (position < (endOfField + 1))
{
position = endOfField + 1;
}
}
position += trailer.decode(buffer, position, end - position);
return position - offset;
}
public void reset()
{
header.reset();
trailer.reset();
resetMessage();
buffer = null;
if (CODEC_VALIDATION_ENABLED)
{
invalidTagId = Decoder.NO_ERROR;
rejectReason = Decoder.NO_ERROR;
missingRequiredFields.clear();
unknownFields.clear();
alreadyVisitedFields.clear();
}
}
public void resetMessage()
{
this.resetEncryptMethod();
this.resetHeartBtInt();
this.resetRawDataLength();
this.resetRawData();
this.resetResetSeqNumFlag();
this.resetNextExpectedMsgSeqNum();
this.resetMaxMessageSize();
this.resetTestMessageIndicator();
this.resetUsername();
this.resetPassword();
this.resetNewPassword();
this.resetEncryptedPasswordMethod();
this.resetEncryptedPasswordLen();
this.resetEncryptedPassword();
this.resetEncryptedNewPasswordLen();
this.resetEncryptedNewPassword();
this.resetSessionStatus();
this.resetDefaultApplVerID();
this.resetDefaultApplExtID();
this.resetDefaultCstmApplVerID();
this.resetText();
this.resetEncodedTextLen();
this.resetEncodedText();
this.resetMsgTypesGroup();
}
public void resetEncryptMethod()
{
encryptMethod = MISSING_INT;
}
public void resetHeartBtInt()
{
heartBtInt = MISSING_INT;
}
public void resetRawDataLength()
{
hasRawDataLength = false;
}
public void resetRawData()
{
hasRawData = false;
}
public void resetResetSeqNumFlag()
{
hasResetSeqNumFlag = false;
}
public void resetNextExpectedMsgSeqNum()
{
hasNextExpectedMsgSeqNum = false;
}
public void resetMaxMessageSize()
{
hasMaxMessageSize = false;
}
public void resetTestMessageIndicator()
{
hasTestMessageIndicator = false;
}
public void resetUsername()
{
hasUsername = false;
}
public void resetPassword()
{
hasPassword = false;
}
public void resetNewPassword()
{
hasNewPassword = false;
}
public void resetEncryptedPasswordMethod()
{
hasEncryptedPasswordMethod = false;
}
public void resetEncryptedPasswordLen()
{
hasEncryptedPasswordLen = false;
}
public void resetEncryptedPassword()
{
hasEncryptedPassword = false;
}
public void resetEncryptedNewPasswordLen()
{
hasEncryptedNewPasswordLen = false;
}
public void resetEncryptedNewPassword()
{
hasEncryptedNewPassword = false;
}
public void resetSessionStatus()
{
hasSessionStatus = false;
}
public void resetDefaultApplVerID()
{
defaultApplVerIDOffset = 0;
defaultApplVerIDLength = 0;
}
public void resetDefaultApplExtID()
{
hasDefaultApplExtID = false;
}
public void resetDefaultCstmApplVerID()
{
hasDefaultCstmApplVerID = false;
}
public void resetText()
{
hasText = false;
}
public void resetEncodedTextLen()
{
hasEncodedTextLen = false;
}
public void resetEncodedText()
{
hasEncodedText = false;
}
public void resetMsgTypesGroup()
{
for (final MsgTypesGroupDecoder msgTypesGroupDecoder : msgTypesGroupIterator.iterator())
{
msgTypesGroupDecoder.reset();
if (msgTypesGroupDecoder.next() == null)
{
break;
}
}
noMsgTypesGroupCounter = MISSING_INT;
hasNoMsgTypesGroupCounter = false;
}
public String toString()
{
return appendTo(new StringBuilder()).toString();
}
public StringBuilder appendTo(final StringBuilder builder)
{
return appendTo(builder, 1);
}
public StringBuilder appendTo(final StringBuilder builder, final int level)
{
builder.append("{\n"); indent(builder, level);
builder.append("\"MessageName\": \"Logon\",\n");
builder.append(" \"header\": ");
header.appendTo(builder, level + 1);
builder.append("\n");
indent(builder, level);
builder.append("\"EncryptMethod\": \"");
builder.append(encryptMethod);
builder.append("\",\n");
indent(builder, level);
builder.append("\"HeartBtInt\": \"");
builder.append(heartBtInt);
builder.append("\",\n");
if (hasRawDataLength())
{
indent(builder, level);
builder.append("\"RawDataLength\": \"");
builder.append(rawDataLength);
builder.append("\",\n");
}
if (hasRawData())
{
indent(builder, level);
builder.append("\"RawData\": \"");
appendData(builder, rawData, rawDataLength);
builder.append("\",\n");
}
if (hasResetSeqNumFlag())
{
indent(builder, level);
builder.append("\"ResetSeqNumFlag\": \"");
builder.append(resetSeqNumFlag);
builder.append("\",\n");
}
if (hasNextExpectedMsgSeqNum())
{
indent(builder, level);
builder.append("\"NextExpectedMsgSeqNum\": \"");
builder.append(nextExpectedMsgSeqNum);
builder.append("\",\n");
}
if (hasMaxMessageSize())
{
indent(builder, level);
builder.append("\"MaxMessageSize\": \"");
builder.append(maxMessageSize);
builder.append("\",\n");
}
if (hasNoMsgTypesGroupCounter)
{
indent(builder, level);
builder.append("\"MsgTypesGroup\": [\n");
MsgTypesGroupDecoder msgTypesGroup = this.msgTypesGroup;
for (int i = 0, size = this.noMsgTypesGroupCounter; i < size; i++)
{
indent(builder, level);
msgTypesGroup.appendTo(builder, level + 1);
if (msgTypesGroup.next() != null)
{
builder.append(',');
}
builder.append('\n');
msgTypesGroup = msgTypesGroup.next(); }
indent(builder, level);
builder.append("],\n");
}
if (hasTestMessageIndicator())
{
indent(builder, level);
builder.append("\"TestMessageIndicator\": \"");
builder.append(testMessageIndicator);
builder.append("\",\n");
}
if (hasUsername())
{
indent(builder, level);
builder.append("\"Username\": \"");
builder.append(this.username(), 0, usernameLength());
builder.append("\",\n");
}
if (hasPassword())
{
indent(builder, level);
builder.append("\"Password\": \"");
builder.append(this.password(), 0, passwordLength());
builder.append("\",\n");
}
if (hasNewPassword())
{
indent(builder, level);
builder.append("\"NewPassword\": \"");
builder.append(this.newPassword(), 0, newPasswordLength());
builder.append("\",\n");
}
if (hasEncryptedPasswordMethod())
{
indent(builder, level);
builder.append("\"EncryptedPasswordMethod\": \"");
builder.append(encryptedPasswordMethod);
builder.append("\",\n");
}
if (hasEncryptedPasswordLen())
{
indent(builder, level);
builder.append("\"EncryptedPasswordLen\": \"");
builder.append(encryptedPasswordLen);
builder.append("\",\n");
}
if (hasEncryptedPassword())
{
indent(builder, level);
builder.append("\"EncryptedPassword\": \"");
appendData(builder, encryptedPassword, encryptedPasswordLen);
builder.append("\",\n");
}
if (hasEncryptedNewPasswordLen())
{
indent(builder, level);
builder.append("\"EncryptedNewPasswordLen\": \"");
builder.append(encryptedNewPasswordLen);
builder.append("\",\n");
}
if (hasEncryptedNewPassword())
{
indent(builder, level);
builder.append("\"EncryptedNewPassword\": \"");
appendData(builder, encryptedNewPassword, encryptedNewPasswordLen);
builder.append("\",\n");
}
if (hasSessionStatus())
{
indent(builder, level);
builder.append("\"SessionStatus\": \"");
builder.append(sessionStatus);
builder.append("\",\n");
}
indent(builder, level);
builder.append("\"DefaultApplVerID\": \"");
builder.append(this.defaultApplVerID(), 0, defaultApplVerIDLength());
builder.append("\",\n");
if (hasDefaultApplExtID())
{
indent(builder, level);
builder.append("\"DefaultApplExtID\": \"");
builder.append(defaultApplExtID);
builder.append("\",\n");
}
if (hasDefaultCstmApplVerID())
{
indent(builder, level);
builder.append("\"DefaultCstmApplVerID\": \"");
builder.append(this.defaultCstmApplVerID(), 0, defaultCstmApplVerIDLength());
builder.append("\",\n");
}
if (hasText())
{
indent(builder, level);
builder.append("\"Text\": \"");
builder.append(this.text(), 0, textLength());
builder.append("\",\n");
}
if (hasEncodedTextLen())
{
indent(builder, level);
builder.append("\"EncodedTextLen\": \"");
builder.append(encodedTextLen);
builder.append("\",\n");
}
if (hasEncodedText())
{
indent(builder, level);
builder.append("\"EncodedText\": \"");
appendData(builder, encodedText, encodedTextLen);
builder.append("\",\n");
}
indent(builder, level - 1);
builder.append("}");
return builder;
}
public LogonEncoder toEncoder(final Encoder encoder)
{
return toEncoder((LogonEncoder)encoder);
}
public LogonEncoder toEncoder(final LogonEncoder encoder)
{
encoder.reset();
encoder.encryptMethod(this.encryptMethod());
encoder.heartBtInt(this.heartBtInt());
if (hasRawDataLength())
{
encoder.rawDataLength(this.rawDataLength());
}
if (hasRawData())
{
encoder.rawDataAsCopy(this.rawData(), 0, rawDataLength());
encoder.rawDataLength(this.rawDataLength());
}
if (hasResetSeqNumFlag())
{
encoder.resetSeqNumFlag(this.resetSeqNumFlag());
}
if (hasNextExpectedMsgSeqNum())
{
encoder.nextExpectedMsgSeqNum(this.nextExpectedMsgSeqNum());
}
if (hasMaxMessageSize())
{
encoder.maxMessageSize(this.maxMessageSize());
}
final MsgTypeGrpEncoder msgTypeGrp = encoder.msgTypeGrp(); if (hasNoMsgTypesGroupCounter)
{
final int size = this.noMsgTypesGroupCounter;
MsgTypesGroupDecoder msgTypesGroup = this.msgTypesGroup;
MsgTypesGroupEncoder msgTypesGroupEncoder = msgTypeGrp.msgTypesGroup(size);
for (int i = 0; i < size; i++)
{
if (msgTypesGroup != null)
{
msgTypesGroup.toEncoder(msgTypesGroupEncoder);
msgTypesGroup = msgTypesGroup.next();
msgTypesGroupEncoder = msgTypesGroupEncoder.next();
}
}
}
if (hasTestMessageIndicator())
{
encoder.testMessageIndicator(this.testMessageIndicator());
}
if (hasUsername())
{
encoder.username(this.username(), 0, usernameLength());
}
if (hasPassword())
{
encoder.password(this.password(), 0, passwordLength());
}
if (hasNewPassword())
{
encoder.newPassword(this.newPassword(), 0, newPasswordLength());
}
if (hasEncryptedPasswordMethod())
{
encoder.encryptedPasswordMethod(this.encryptedPasswordMethod());
}
if (hasEncryptedPasswordLen())
{
encoder.encryptedPasswordLen(this.encryptedPasswordLen());
}
if (hasEncryptedPassword())
{
encoder.encryptedPasswordAsCopy(this.encryptedPassword(), 0, encryptedPasswordLen());
encoder.encryptedPasswordLen(this.encryptedPasswordLen());
}
if (hasEncryptedNewPasswordLen())
{
encoder.encryptedNewPasswordLen(this.encryptedNewPasswordLen());
}
if (hasEncryptedNewPassword())
{
encoder.encryptedNewPasswordAsCopy(this.encryptedNewPassword(), 0, encryptedNewPasswordLen());
encoder.encryptedNewPasswordLen(this.encryptedNewPasswordLen());
}
if (hasSessionStatus())
{
encoder.sessionStatus(this.sessionStatus());
}
encoder.defaultApplVerID(this.defaultApplVerID(), 0, defaultApplVerIDLength());
if (hasDefaultApplExtID())
{
encoder.defaultApplExtID(this.defaultApplExtID());
}
if (hasDefaultCstmApplVerID())
{
encoder.defaultCstmApplVerID(this.defaultCstmApplVerID(), 0, defaultCstmApplVerIDLength());
}
if (hasText())
{
encoder.text(this.text(), 0, textLength());
}
if (hasEncodedTextLen())
{
encoder.encodedTextLen(this.encodedTextLen());
}
if (hasEncodedText())
{
encoder.encodedTextAsCopy(this.encodedText(), 0, encodedTextLen());
encoder.encodedTextLen(this.encodedTextLen());
}
return encoder;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy