All Downloads are FREE. Search and download functionalities are using the official Maven repository.

b3.entrypoint.fixp.sbe.EstablishDecoder Maven / Gradle / Ivy

/* Generated SBE (Simple Binary Encoding) message codec. */
package b3.entrypoint.fixp.sbe;

import org.agrona.MutableDirectBuffer;
import org.agrona.DirectBuffer;
import org.agrona.sbe.*;


/**
 * After negotiation level is complete, the client must send an Establish message to start assigning sequence numbers and also to keep the connection active. Once the connection is established, client can submit orders and quotes.
 */
@SuppressWarnings("all")
public final class EstablishDecoder implements MessageDecoderFlyweight
{
    public static final int BLOCK_LENGTH = 41;
    public static final int TEMPLATE_ID = 4;
    public static final int SCHEMA_ID = 1;
    public static final int SCHEMA_VERSION = 5;
    public static final String SEMANTIC_VERSION = "5.6";
    public static final java.nio.ByteOrder BYTE_ORDER = java.nio.ByteOrder.LITTLE_ENDIAN;

    private final EstablishDecoder parentMessage = this;
    private DirectBuffer buffer;
    private int offset;
    private int limit;
    int actingBlockLength;
    int actingVersion;

    public int sbeBlockLength()
    {
        return BLOCK_LENGTH;
    }

    public int sbeTemplateId()
    {
        return TEMPLATE_ID;
    }

    public int sbeSchemaId()
    {
        return SCHEMA_ID;
    }

    public int sbeSchemaVersion()
    {
        return SCHEMA_VERSION;
    }

    public String sbeSemanticType()
    {
        return "";
    }

    public DirectBuffer buffer()
    {
        return buffer;
    }

    public int offset()
    {
        return offset;
    }

    public EstablishDecoder wrap(
        final DirectBuffer buffer,
        final int offset,
        final int actingBlockLength,
        final int actingVersion)
    {
        if (buffer != this.buffer)
        {
            this.buffer = buffer;
        }
        this.offset = offset;
        this.actingBlockLength = actingBlockLength;
        this.actingVersion = actingVersion;
        limit(offset + actingBlockLength);

        return this;
    }

    public EstablishDecoder wrapAndApplyHeader(
        final DirectBuffer buffer,
        final int offset,
        final MessageHeaderDecoder headerDecoder)
    {
        headerDecoder.wrap(buffer, offset);

        final int templateId = headerDecoder.templateId();
        if (TEMPLATE_ID != templateId)
        {
            throw new IllegalStateException("Invalid TEMPLATE_ID: " + templateId);
        }

        return wrap(
            buffer,
            offset + MessageHeaderDecoder.ENCODED_LENGTH,
            headerDecoder.blockLength(),
            headerDecoder.version());
    }

    public EstablishDecoder sbeRewind()
    {
        return wrap(buffer, offset, actingBlockLength, actingVersion);
    }

    public int sbeDecodedLength()
    {
        final int currentLimit = limit();
        sbeSkip();
        final int decodedLength = encodedLength();
        limit(currentLimit);

        return decodedLength;
    }

    public int actingVersion()
    {
        return actingVersion;
    }

    public int encodedLength()
    {
        return limit - offset;
    }

    public int limit()
    {
        return limit;
    }

    public void limit(final int limit)
    {
        this.limit = limit;
    }

    public static int messageTypeId()
    {
        return 35;
    }

    public static int messageTypeSinceVersion()
    {
        return 0;
    }

    public static int messageTypeEncodingOffset()
    {
        return 0;
    }

    public static int messageTypeEncodingLength()
    {
        return 1;
    }

    public static String messageTypeMetaAttribute(final MetaAttribute metaAttribute)
    {
        if (MetaAttribute.PRESENCE == metaAttribute)
        {
            return "constant";
        }

        return "";
    }

    public short messageTypeRaw()
    {
        return MessageType.Establish.value();
    }


    public MessageType messageType()
    {
        return MessageType.Establish;
    }


    public static int sessionIDId()
    {
        return 35518;
    }

    public static int sessionIDSinceVersion()
    {
        return 0;
    }

    public static int sessionIDEncodingOffset()
    {
        return 0;
    }

    public static int sessionIDEncodingLength()
    {
        return 4;
    }

    public static String sessionIDMetaAttribute(final MetaAttribute metaAttribute)
    {
        if (MetaAttribute.PRESENCE == metaAttribute)
        {
            return "required";
        }

        return "";
    }

    public static long sessionIDNullValue()
    {
        return 4294967295L;
    }

    public static long sessionIDMinValue()
    {
        return 0L;
    }

    public static long sessionIDMaxValue()
    {
        return 4294967294L;
    }

    public long sessionID()
    {
        return (buffer.getInt(offset + 0, BYTE_ORDER) & 0xFFFF_FFFFL);
    }


    public static int sessionVerIDId()
    {
        return 35519;
    }

    public static int sessionVerIDSinceVersion()
    {
        return 0;
    }

    public static int sessionVerIDEncodingOffset()
    {
        return 4;
    }

    public static int sessionVerIDEncodingLength()
    {
        return 8;
    }

    public static String sessionVerIDMetaAttribute(final MetaAttribute metaAttribute)
    {
        if (MetaAttribute.PRESENCE == metaAttribute)
        {
            return "required";
        }

        return "";
    }

    public static long sessionVerIDNullValue()
    {
        return 0xffffffffffffffffL;
    }

    public static long sessionVerIDMinValue()
    {
        return 0x0L;
    }

    public static long sessionVerIDMaxValue()
    {
        return 0xfffffffffffffffeL;
    }

    public long sessionVerID()
    {
        return buffer.getLong(offset + 4, BYTE_ORDER);
    }


    public static int timestampId()
    {
        return 35520;
    }

    public static int timestampSinceVersion()
    {
        return 0;
    }

    public static int timestampEncodingOffset()
    {
        return 12;
    }

    public static int timestampEncodingLength()
    {
        return 8;
    }

    public static String timestampMetaAttribute(final MetaAttribute metaAttribute)
    {
        if (MetaAttribute.PRESENCE == metaAttribute)
        {
            return "required";
        }

        return "";
    }

    private final UTCTimestampNanosDecoder timestamp = new UTCTimestampNanosDecoder();

    /**
     * Time of request. Sent in number of nanoseconds since Unix epoch.
     *
     * @return UTCTimestampNanosDecoder : Time of request. Sent in number of nanoseconds since Unix epoch.
     */
    public UTCTimestampNanosDecoder timestamp()
    {
        timestamp.wrap(buffer, offset + 12);
        return timestamp;
    }

    public static int keepAliveIntervalId()
    {
        return 35525;
    }

    public static int keepAliveIntervalSinceVersion()
    {
        return 0;
    }

    public static int keepAliveIntervalEncodingOffset()
    {
        return 20;
    }

    public static int keepAliveIntervalEncodingLength()
    {
        return 8;
    }

    public static String keepAliveIntervalMetaAttribute(final MetaAttribute metaAttribute)
    {
        if (MetaAttribute.PRESENCE == metaAttribute)
        {
            return "required";
        }

        return "";
    }

    private final DeltaInMillisDecoder keepAliveInterval = new DeltaInMillisDecoder();

    /**
     * Longest time in milliseconds the initiator should remain silent before sending Sequence message.
     *
     * @return DeltaInMillisDecoder : Longest time in milliseconds the initiator should remain silent before sending Sequence message.
     */
    public DeltaInMillisDecoder keepAliveInterval()
    {
        keepAliveInterval.wrap(buffer, offset + 20);
        return keepAliveInterval;
    }

    public static int nextSeqNoId()
    {
        return 35526;
    }

    public static int nextSeqNoSinceVersion()
    {
        return 0;
    }

    public static int nextSeqNoEncodingOffset()
    {
        return 28;
    }

    public static int nextSeqNoEncodingLength()
    {
        return 4;
    }

    public static String nextSeqNoMetaAttribute(final MetaAttribute metaAttribute)
    {
        if (MetaAttribute.PRESENCE == metaAttribute)
        {
            return "required";
        }

        return "";
    }

    public static long nextSeqNoNullValue()
    {
        return 4294967295L;
    }

    public static long nextSeqNoMinValue()
    {
        return 0L;
    }

    public static long nextSeqNoMaxValue()
    {
        return 4294967294L;
    }

    public long nextSeqNo()
    {
        return (buffer.getInt(offset + 28, BYTE_ORDER) & 0xFFFF_FFFFL);
    }


    public static int cancelOnDisconnectTypeId()
    {
        return 35002;
    }

    public static int cancelOnDisconnectTypeSinceVersion()
    {
        return 0;
    }

    public static int cancelOnDisconnectTypeEncodingOffset()
    {
        return 32;
    }

    public static int cancelOnDisconnectTypeEncodingLength()
    {
        return 1;
    }

    public static String cancelOnDisconnectTypeMetaAttribute(final MetaAttribute metaAttribute)
    {
        if (MetaAttribute.PRESENCE == metaAttribute)
        {
            return "required";
        }

        return "";
    }

    public short cancelOnDisconnectTypeRaw()
    {
        return ((short)(buffer.getByte(offset + 32) & 0xFF));
    }

    public CancelOnDisconnectType cancelOnDisconnectType()
    {
        return CancelOnDisconnectType.get(((short)(buffer.getByte(offset + 32) & 0xFF)));
    }


    public static int codTimeoutWindowId()
    {
        return 35003;
    }

    public static int codTimeoutWindowSinceVersion()
    {
        return 0;
    }

    public static int codTimeoutWindowEncodingOffset()
    {
        return 33;
    }

    public static int codTimeoutWindowEncodingLength()
    {
        return 8;
    }

    public static String codTimeoutWindowMetaAttribute(final MetaAttribute metaAttribute)
    {
        if (MetaAttribute.PRESENCE == metaAttribute)
        {
            return "required";
        }

        return "";
    }

    private final DeltaInMillisDecoder codTimeoutWindow = new DeltaInMillisDecoder();

    /**
     * Gateway will not trigger CoD if the customer reconnects within the timeout window (milliseconds) which starts when the triggering event is detected. Value = 0 then CoD will not be enabled.
     *
     * @return DeltaInMillisDecoder : Gateway will not trigger CoD if the customer reconnects within the timeout window (milliseconds) which starts when the triggering event is detected. Value = 0 then CoD will not be enabled.
     */
    public DeltaInMillisDecoder codTimeoutWindow()
    {
        codTimeoutWindow.wrap(buffer, offset + 33);
        return codTimeoutWindow;
    }

    public static int credentialsId()
    {
        return 35512;
    }

    public static int credentialsSinceVersion()
    {
        return 0;
    }

    public static String credentialsCharacterEncoding()
    {
        return java.nio.charset.StandardCharsets.UTF_8.name();
    }

    public static String credentialsMetaAttribute(final MetaAttribute metaAttribute)
    {
        if (MetaAttribute.PRESENCE == metaAttribute)
        {
            return "required";
        }
        if (MetaAttribute.SEMANTIC_TYPE == metaAttribute)
        {
            return "String";
        }

        return "";
    }

    public static int credentialsHeaderLength()
    {
        return 1;
    }

    public int credentialsLength()
    {
        final int limit = parentMessage.limit();
        return ((short)(buffer.getByte(limit) & 0xFF));
    }

    public int skipCredentials()
    {
        final int headerLength = 1;
        final int limit = parentMessage.limit();
        final int dataLength = ((short)(buffer.getByte(limit) & 0xFF));
        final int dataOffset = limit + headerLength;
        parentMessage.limit(dataOffset + dataLength);

        return dataLength;
    }

    public int getCredentials(final MutableDirectBuffer dst, final int dstOffset, final int length)
    {
        final int headerLength = 1;
        final int limit = parentMessage.limit();
        final int dataLength = ((short)(buffer.getByte(limit) & 0xFF));
        final int bytesCopied = Math.min(length, dataLength);
        parentMessage.limit(limit + headerLength + dataLength);
        buffer.getBytes(limit + headerLength, dst, dstOffset, bytesCopied);

        return bytesCopied;
    }

    public int getCredentials(final byte[] dst, final int dstOffset, final int length)
    {
        final int headerLength = 1;
        final int limit = parentMessage.limit();
        final int dataLength = ((short)(buffer.getByte(limit) & 0xFF));
        final int bytesCopied = Math.min(length, dataLength);
        parentMessage.limit(limit + headerLength + dataLength);
        buffer.getBytes(limit + headerLength, dst, dstOffset, bytesCopied);

        return bytesCopied;
    }

    public void wrapCredentials(final DirectBuffer wrapBuffer)
    {
        final int headerLength = 1;
        final int limit = parentMessage.limit();
        final int dataLength = ((short)(buffer.getByte(limit) & 0xFF));
        parentMessage.limit(limit + headerLength + dataLength);
        wrapBuffer.wrap(buffer, limit + headerLength, dataLength);
    }

    public String credentials()
    {
        final int headerLength = 1;
        final int limit = parentMessage.limit();
        final int dataLength = ((short)(buffer.getByte(limit) & 0xFF));
        parentMessage.limit(limit + headerLength + dataLength);

        if (0 == dataLength)
        {
            return "";
        }

        final byte[] tmp = new byte[dataLength];
        buffer.getBytes(limit + headerLength, tmp, 0, dataLength);

        return new String(tmp, java.nio.charset.StandardCharsets.UTF_8);
    }

    public String toString()
    {
        if (null == buffer)
        {
            return "";
        }

        final EstablishDecoder decoder = new EstablishDecoder();
        decoder.wrap(buffer, offset, actingBlockLength, actingVersion);

        return decoder.appendTo(new StringBuilder()).toString();
    }

    public StringBuilder appendTo(final StringBuilder builder)
    {
        if (null == buffer)
        {
            return builder;
        }

        final int originalLimit = limit();
        limit(offset + actingBlockLength);
        builder.append("[Establish](sbeTemplateId=");
        builder.append(TEMPLATE_ID);
        builder.append("|sbeSchemaId=");
        builder.append(SCHEMA_ID);
        builder.append("|sbeSchemaVersion=");
        if (parentMessage.actingVersion != SCHEMA_VERSION)
        {
            builder.append(parentMessage.actingVersion);
            builder.append('/');
        }
        builder.append(SCHEMA_VERSION);
        builder.append("|sbeBlockLength=");
        if (actingBlockLength != BLOCK_LENGTH)
        {
            builder.append(actingBlockLength);
            builder.append('/');
        }
        builder.append(BLOCK_LENGTH);
        builder.append("):");
        builder.append("messageType=");
        builder.append(this.messageType());
        builder.append('|');
        builder.append("sessionID=");
        builder.append(this.sessionID());
        builder.append('|');
        builder.append("sessionVerID=");
        builder.append(this.sessionVerID());
        builder.append('|');
        builder.append("timestamp=");
        final UTCTimestampNanosDecoder timestamp = this.timestamp();
        if (null != timestamp)
        {
            timestamp.appendTo(builder);
        }
        else
        {
            builder.append("null");
        }
        builder.append('|');
        builder.append("keepAliveInterval=");
        final DeltaInMillisDecoder keepAliveInterval = this.keepAliveInterval();
        if (null != keepAliveInterval)
        {
            keepAliveInterval.appendTo(builder);
        }
        else
        {
            builder.append("null");
        }
        builder.append('|');
        builder.append("nextSeqNo=");
        builder.append(this.nextSeqNo());
        builder.append('|');
        builder.append("cancelOnDisconnectType=");
        builder.append(this.cancelOnDisconnectType());
        builder.append('|');
        builder.append("codTimeoutWindow=");
        final DeltaInMillisDecoder codTimeoutWindow = this.codTimeoutWindow();
        if (null != codTimeoutWindow)
        {
            codTimeoutWindow.appendTo(builder);
        }
        else
        {
            builder.append("null");
        }
        builder.append('|');
        builder.append("credentials=");
        builder.append('\'').append(credentials()).append('\'');

        limit(originalLimit);

        return builder;
    }
    
    public EstablishDecoder sbeSkip()
    {
        sbeRewind();
        skipCredentials();

        return this;
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy