uk.co.real_logic.artio.other.builder.NewOrderSingleEncoder Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of artio-session-codecs Show documentation
Show all versions of artio-session-codecs Show documentation
High-Performance FIX Gateway
/* Generated Fix Gateway message codec */
package uk.co.real_logic.artio.other.builder;
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.Encoder;
import uk.co.real_logic.artio.other.builder.HeaderEncoder;
import uk.co.real_logic.artio.other.builder.TrailerEncoder;
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 org.agrona.DirectBuffer;
import org.agrona.MutableDirectBuffer;
import org.agrona.concurrent.UnsafeBuffer;
import org.agrona.AsciiSequenceView;
import uk.co.real_logic.artio.builder.FieldBagEncoder;
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.other.*;
@Generated("uk.co.real_logic.artio")
public class NewOrderSingleEncoder implements Encoder
{
public long messageType()
{
return 68L;
}
public NewOrderSingleEncoder()
{
header.msgType("D");
}
private final TrailerEncoder trailer = new TrailerEncoder();
public TrailerEncoder trailer()
{
return trailer;
}
private final HeaderEncoder header = new HeaderEncoder();
public HeaderEncoder header()
{
return header;
}
private static final int clOrdIDHeaderLength = 3;
private static final byte[] clOrdIDHeader = new byte[] {49, 49, (byte) '='};
private static final int sideHeaderLength = 3;
private static final byte[] sideHeader = new byte[] {53, 52, (byte) '='};
private static final int transactTimeHeaderLength = 3;
private static final byte[] transactTimeHeader = new byte[] {54, 48, (byte) '='};
private static final int ordTypeHeaderLength = 3;
private static final byte[] ordTypeHeader = new byte[] {52, 48, (byte) '='};
private static final int priceHeaderLength = 3;
private static final byte[] priceHeader = new byte[] {52, 52, (byte) '='};
private final MutableDirectBuffer clOrdID = new UnsafeBuffer();
private byte[] clOrdIDInternalBuffer = clOrdID.byteArray();
private int clOrdIDOffset = 0;
private int clOrdIDLength = 0;
/* ClOrdID = 11 */
public NewOrderSingleEncoder clOrdID(final DirectBuffer value, final int offset, final int length)
{
clOrdID.wrap(value);
clOrdIDOffset = offset;
clOrdIDLength = length;
return this;
}
/* ClOrdID = 11 */
public NewOrderSingleEncoder clOrdID(final DirectBuffer value, final int length)
{
return clOrdID(value, 0, length);
}
/* ClOrdID = 11 */
public NewOrderSingleEncoder clOrdID(final DirectBuffer value)
{
return clOrdID(value, 0, value.capacity());
}
/* ClOrdID = 11 */
public NewOrderSingleEncoder clOrdID(final byte[] value, final int offset, final int length)
{
clOrdID.wrap(value);
clOrdIDOffset = offset;
clOrdIDLength = length;
return this;
}
/* ClOrdID = 11 */
public NewOrderSingleEncoder clOrdIDAsCopy(final byte[] value, final int offset, final int length)
{
if (copyInto(clOrdID, value, offset, length))
{
clOrdIDInternalBuffer = clOrdID.byteArray();
}
clOrdIDOffset = 0;
clOrdIDLength = length;
return this;
}
/* ClOrdID = 11 */
public NewOrderSingleEncoder clOrdID(final byte[] value, final int length)
{
return clOrdID(value, 0, length);
}
/* ClOrdID = 11 */
public NewOrderSingleEncoder clOrdID(final byte[] value)
{
return clOrdID(value, 0, value.length);
}
/* ClOrdID = 11 */
public boolean hasClOrdID()
{
return clOrdIDLength > 0;
}
/* ClOrdID = 11 */
public MutableDirectBuffer clOrdID()
{
return clOrdID;
}
/* ClOrdID = 11 */
public String clOrdIDAsString()
{
return clOrdID.getStringWithoutLengthAscii(clOrdIDOffset, clOrdIDLength);
}
/* ClOrdID = 11 */
public NewOrderSingleEncoder clOrdID(final CharSequence value)
{
if (toBytes(value, clOrdID))
{
clOrdIDInternalBuffer = clOrdID.byteArray();
}
clOrdIDOffset = 0;
clOrdIDLength = value.length();
return this;
}
/* ClOrdID = 11 */
public NewOrderSingleEncoder clOrdID(final AsciiSequenceView value)
{
final DirectBuffer buffer = value.buffer();
if (buffer != null)
{
clOrdID.wrap(buffer);
clOrdIDOffset = value.offset();
clOrdIDLength = value.length();
}
return this;
}
/* ClOrdID = 11 */
public NewOrderSingleEncoder clOrdID(final char[] value)
{
return clOrdID(value, 0, value.length);
}
/* ClOrdID = 11 */
public NewOrderSingleEncoder clOrdID(final char[] value, final int length)
{
return clOrdID(value, 0, length);
}
/* ClOrdID = 11 */
public NewOrderSingleEncoder clOrdID(final char[] value, final int offset, final int length)
{
if (toBytes(value, clOrdID, offset, length))
{
clOrdIDInternalBuffer = clOrdID.byteArray();
}
clOrdIDOffset = 0;
clOrdIDLength = length;
return this;
}
private final InstrumentEncoder instrument = new InstrumentEncoder();
public InstrumentEncoder instrument()
{
return instrument;
}
private char side;
private boolean hasSide;
public boolean hasSide()
{
return hasSide;
}
/* Side = 54 */
public NewOrderSingleEncoder side(char value)
{
side = value;
hasSide = true;
return this;
}
/* Side = 54 */
public char side()
{
return side;
}
public NewOrderSingleEncoder side(Side value)
{
if (CODEC_VALIDATION_ENABLED)
{
if (value == Side.ARTIO_UNKNOWN)
{
throw new EncodingException("Invalid Value Field: side Value: " + value );
}
if (value == Side.NULL_VAL)
{
return this;
}
}
return side(value.representation());
}
private final MutableDirectBuffer transactTime = new UnsafeBuffer();
private byte[] transactTimeInternalBuffer = transactTime.byteArray();
private int transactTimeOffset = 0;
private int transactTimeLength = 0;
/* TransactTime = 60 */
public NewOrderSingleEncoder transactTime(final DirectBuffer value, final int offset, final int length)
{
transactTime.wrap(value);
transactTimeOffset = offset;
transactTimeLength = length;
return this;
}
/* TransactTime = 60 */
public NewOrderSingleEncoder transactTime(final DirectBuffer value, final int length)
{
return transactTime(value, 0, length);
}
/* TransactTime = 60 */
public NewOrderSingleEncoder transactTime(final DirectBuffer value)
{
return transactTime(value, 0, value.capacity());
}
/* TransactTime = 60 */
public NewOrderSingleEncoder transactTime(final byte[] value, final int offset, final int length)
{
transactTime.wrap(value);
transactTimeOffset = offset;
transactTimeLength = length;
return this;
}
/* TransactTime = 60 */
public NewOrderSingleEncoder transactTimeAsCopy(final byte[] value, final int offset, final int length)
{
if (copyInto(transactTime, value, offset, length))
{
transactTimeInternalBuffer = transactTime.byteArray();
}
transactTimeOffset = 0;
transactTimeLength = length;
return this;
}
/* TransactTime = 60 */
public NewOrderSingleEncoder transactTime(final byte[] value, final int length)
{
return transactTime(value, 0, length);
}
/* TransactTime = 60 */
public NewOrderSingleEncoder transactTime(final byte[] value)
{
return transactTime(value, 0, value.length);
}
/* TransactTime = 60 */
public boolean hasTransactTime()
{
return transactTimeLength > 0;
}
/* TransactTime = 60 */
public MutableDirectBuffer transactTime()
{
return transactTime;
}
/* TransactTime = 60 */
public String transactTimeAsString()
{
return transactTime.getStringWithoutLengthAscii(transactTimeOffset, transactTimeLength);
}
private final OrderQtyDataEncoder orderQtyData = new OrderQtyDataEncoder();
public OrderQtyDataEncoder orderQtyData()
{
return orderQtyData;
}
private char ordType;
private boolean hasOrdType;
public boolean hasOrdType()
{
return hasOrdType;
}
/* OrdType = 40 */
public NewOrderSingleEncoder ordType(char value)
{
ordType = value;
hasOrdType = true;
return this;
}
/* OrdType = 40 */
public char ordType()
{
return ordType;
}
public NewOrderSingleEncoder ordType(OrdType value)
{
if (CODEC_VALIDATION_ENABLED)
{
if (value == OrdType.ARTIO_UNKNOWN)
{
throw new EncodingException("Invalid Value Field: ordType Value: " + value );
}
if (value == OrdType.NULL_VAL)
{
return this;
}
}
return ordType(value.representation());
}
private final DecimalFloat price = new DecimalFloat();
private boolean hasPrice;
public boolean hasPrice()
{
return hasPrice;
}
/* Price = 44 */
public NewOrderSingleEncoder price(ReadOnlyDecimalFloat value)
{
price.set(value);
hasPrice = true;
return this;
}
/* Price = 44 */
public NewOrderSingleEncoder price(long value, int scale)
{
price.set(value, scale);
hasPrice = true;
return this;
}
/* Price = 44 */
public DecimalFloat price()
{
return price;
}
public long encode(final MutableAsciiBuffer buffer, final int offset)
{
final long startMessageResult = header.startMessage(buffer, offset);
final int bodyStart = Encoder.offset(startMessageResult);
int position = bodyStart + Encoder.length(startMessageResult);
if (clOrdIDLength > 0)
{
buffer.putBytes(position, clOrdIDHeader, 0, clOrdIDHeaderLength);
position += clOrdIDHeaderLength;
buffer.putBytes(position, clOrdID, clOrdIDOffset, clOrdIDLength);
position += clOrdIDLength;
buffer.putSeparator(position);
position++;
}
else if (CODEC_VALIDATION_ENABLED)
{
throw new EncodingException("Missing Field: ClOrdID");
}
position += instrument.encode(buffer, position);
if (hasSide)
{
buffer.putBytes(position, sideHeader, 0, sideHeaderLength);
position += sideHeaderLength;
position += buffer.putCharAscii(position, side);
buffer.putSeparator(position);
position++;
}
else if (CODEC_VALIDATION_ENABLED)
{
throw new EncodingException("Missing Field: Side");
}
if (transactTimeLength > 0)
{
buffer.putBytes(position, transactTimeHeader, 0, transactTimeHeaderLength);
position += transactTimeHeaderLength;
buffer.putBytes(position, transactTime, transactTimeOffset, transactTimeLength);
position += transactTimeLength;
buffer.putSeparator(position);
position++;
}
else if (CODEC_VALIDATION_ENABLED)
{
throw new EncodingException("Missing Field: TransactTime");
}
position += orderQtyData.encode(buffer, position);
if (hasOrdType)
{
buffer.putBytes(position, ordTypeHeader, 0, ordTypeHeaderLength);
position += ordTypeHeaderLength;
position += buffer.putCharAscii(position, ordType);
buffer.putSeparator(position);
position++;
}
else if (CODEC_VALIDATION_ENABLED)
{
throw new EncodingException("Missing Field: OrdType");
}
if (hasPrice)
{
buffer.putBytes(position, priceHeader, 0, priceHeaderLength);
position += priceHeaderLength;
position += buffer.putFloatAscii(position, price);
buffer.putSeparator(position);
position++;
}
else if (CODEC_VALIDATION_ENABLED)
{
throw new EncodingException("Missing Field: Price");
}
position += trailer.startTrailer(buffer, position);
final int messageStart = header.finishHeader(buffer, bodyStart, position - bodyStart);
return trailer.finishMessage(buffer, messageStart, position);
}
public void reset()
{
header.reset();
trailer.reset();
resetMessage();
}
public void resetMessage()
{
this.resetClOrdID();
this.resetSide();
this.resetTransactTime();
this.resetOrdType();
this.resetPrice();
instrument.reset();
orderQtyData.reset();
}
public void resetClOrdID()
{
clOrdIDLength = 0;
clOrdID.wrap(clOrdIDInternalBuffer);
}
public void resetSide()
{
side = MISSING_CHAR;
}
public void resetTransactTime()
{
transactTimeLength = 0;
transactTime.wrap(transactTimeInternalBuffer);
}
public void resetOrdType()
{
ordType = MISSING_CHAR;
}
public void resetPrice()
{
hasPrice = 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\": \"NewOrderSingle\",\n");
builder.append(" \"header\": ");
header.appendTo(builder, level + 1);
builder.append("\n");
if (hasClOrdID())
{
indent(builder, level);
builder.append("\"ClOrdID\": \"");
appendBuffer(builder, clOrdID, clOrdIDOffset, clOrdIDLength);
builder.append("\",\n");
}
indent(builder, level);
builder.append("\"Instrument\": ");
instrument.appendTo(builder, level + 1);
builder.append("\n");
if (hasSide())
{
indent(builder, level);
builder.append("\"Side\": \"");
builder.append(side);
builder.append("\",\n");
}
if (hasTransactTime())
{
indent(builder, level);
builder.append("\"TransactTime\": \"");
appendBuffer(builder, transactTime, transactTimeOffset, transactTimeLength);
builder.append("\",\n");
}
indent(builder, level);
builder.append("\"OrderQtyData\": ");
orderQtyData.appendTo(builder, level + 1);
builder.append("\n");
if (hasOrdType())
{
indent(builder, level);
builder.append("\"OrdType\": \"");
builder.append(ordType);
builder.append("\",\n");
}
if (hasPrice())
{
indent(builder, level);
builder.append("\"Price\": \"");
price.appendTo(builder);
builder.append("\",\n");
}
indent(builder, level - 1);
builder.append("}");
return builder;
}
public NewOrderSingleEncoder copyTo(final Encoder encoder)
{
return copyTo((NewOrderSingleEncoder)encoder);
}
public NewOrderSingleEncoder copyTo(final NewOrderSingleEncoder encoder)
{
encoder.reset();
if (hasClOrdID())
{
encoder.clOrdIDAsCopy(clOrdID.byteArray(), 0, clOrdIDLength);
}
instrument.copyTo(encoder.instrument());
if (hasSide())
{
encoder.side(this.side());
}
if (hasTransactTime())
{
encoder.transactTimeAsCopy(transactTime.byteArray(), 0, transactTimeLength);
}
orderQtyData.copyTo(encoder.orderQtyData());
if (hasOrdType())
{
encoder.ordType(this.ordType());
}
if (hasPrice())
{
encoder.price(this.price());
}
return encoder;
}
}