public Field(Dictionary.Field definition, Dictionary.FIX_4_2.ExecTransType value) : this(definition.Tag, value) { Definition = definition; }
public Field(Dictionary.Field definition) { Definition = definition; Tag = definition.Tag; }
public Field(Dictionary.Field definition, CxlRejResponseTo value) : this(definition.Tag, value) { Definition = definition; }
public Field(Dictionary.Field definition, SessionStatus value) : this(definition.Tag, value) { Definition = definition; }
public Field(Dictionary.Field definition, TimeInForce value) : this(definition.Tag, value) { Definition = definition; }
public Field(Dictionary.Field definition, ExchangeTradeType value) : this(definition.Tag, value) { Definition = definition; }
public Field(Dictionary.Field definition, PartyRole value) : this(definition.Tag, value) { Definition = definition; }
public void Read(Message message) { Field previous = null; for (long index = 0; ; ++index) { _tag.Length = 0; _value.Length = 0; char token; for (; ;) { token = ReadChar(); if (token == Field.ValueSeparator || token == Field.Separator) { break; } _tag.Append(token); } Dictionary.Field definition = null; if (ValidateDataFields && Dictionary.Fields.TryGetValue(_tag.ToString(), out definition) && definition != null && definition.DataType == Dictionary.DataTypes.Data) { if (previous == null) { throw new Exception($"Encountered a data type field at index {index} [{definition.Tag}] with no previous field"); } if (!int.TryParse(previous.Value, out int dataLength)) { throw new Exception($"Encountered a data type field at index {index} [{definition.Tag}] but the previous field {previous} was not numeric"); } byte[] bytes = new byte[dataLength]; if (ReadChars(bytes, 0, bytes.Length) != bytes.Length) { throw new EndOfStreamException(); } _value.Append(Convert.ToBase64String(bytes)); char trailing = ReadChar(); if (trailing != Field.Separator) { throw new Exception($"Read [{trailing}] when expecting SOH field separator after data field [{definition.Tag}]"); } } else { try { for (; ;) { token = ReadChar(); if (Convert.ToByte(token) == Field.Separator) { break; } _value.Append(token); } } catch (EndOfStreamException) { } } var field = new Field(_tag.ToString(), _value.ToString()) { Data = definition != null && definition.DataType == Dictionary.DataTypes.Data }; message.Fields.Add(field); if (field.Tag == Dictionary.Fields.CheckSum.Tag) { break; } previous = field; } OnMessageRead(message); }
public Field(Dictionary.Field definition, TradeReportType value) : this(definition.Tag, value) { Definition = definition; }
public Field(Dictionary.Field definition, TradeReportRejectReason value) : this(definition.Tag, value) { Definition = definition; }
public Field(Dictionary.Field definition, TradeHandlingInstr value) : this(definition.Tag, value) { Definition = definition; }
public Field(Dictionary.Field definition, HandlInst value) : this(definition.Tag, value) { Definition = definition; }
public Field(Dictionary.Field definition, ExecType value) : this(definition.Tag, value) { Definition = definition; }
public Field(Dictionary.Field definition, bool value) : this(definition.Tag, value) { Definition = definition; }
public Field(Dictionary.Field definition, ClearingInstruction value) : this(definition.Tag, value) { Definition = definition; }
public Field(Dictionary.Field definition, int value) : this(definition.Tag, value.ToString()) { Definition = definition; }
public Field(Dictionary.Field definition, OrderCategory value) : this(definition.Tag, value) { Definition = definition; }
public MissingFieldException(Dictionary.Field field) : base($"Message does not contain a {field.Name} field") { }
public Field(Dictionary.Field definition, SecurityIDSource value) : this(definition.Tag, value) { Definition = definition; }