Esempio n. 1
0
 public Field(Dictionary.Field definition, Dictionary.FIX_4_2.ExecTransType value)
     : this(definition.Tag, value)
 {
     Definition = definition;
 }
Esempio n. 2
0
 public Field(Dictionary.Field definition)
 {
     Definition = definition;
     Tag        = definition.Tag;
 }
Esempio n. 3
0
 public Field(Dictionary.Field definition, CxlRejResponseTo value)
     : this(definition.Tag, value)
 {
     Definition = definition;
 }
Esempio n. 4
0
 public Field(Dictionary.Field definition, SessionStatus value)
     : this(definition.Tag, value)
 {
     Definition = definition;
 }
Esempio n. 5
0
 public Field(Dictionary.Field definition, TimeInForce value)
     : this(definition.Tag, value)
 {
     Definition = definition;
 }
Esempio n. 6
0
 public Field(Dictionary.Field definition, ExchangeTradeType value)
     : this(definition.Tag, value)
 {
     Definition = definition;
 }
Esempio n. 7
0
 public Field(Dictionary.Field definition, PartyRole value)
     : this(definition.Tag, value)
 {
     Definition = definition;
 }
Esempio n. 8
0
        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);
        }
Esempio n. 9
0
 public Field(Dictionary.Field definition, TradeReportType value)
     : this(definition.Tag, value)
 {
     Definition = definition;
 }
Esempio n. 10
0
 public Field(Dictionary.Field definition, TradeReportRejectReason value)
     : this(definition.Tag, value)
 {
     Definition = definition;
 }
Esempio n. 11
0
 public Field(Dictionary.Field definition, TradeHandlingInstr value)
     : this(definition.Tag, value)
 {
     Definition = definition;
 }
Esempio n. 12
0
 public Field(Dictionary.Field definition, HandlInst value)
     : this(definition.Tag, value)
 {
     Definition = definition;
 }
Esempio n. 13
0
 public Field(Dictionary.Field definition, ExecType value)
     : this(definition.Tag, value)
 {
     Definition = definition;
 }
Esempio n. 14
0
 public Field(Dictionary.Field definition, bool value)
     : this(definition.Tag, value)
 {
     Definition = definition;
 }
Esempio n. 15
0
 public Field(Dictionary.Field definition, ClearingInstruction value)
     : this(definition.Tag, value)
 {
     Definition = definition;
 }
Esempio n. 16
0
 public Field(Dictionary.Field definition, int value)
     : this(definition.Tag, value.ToString())
 {
     Definition = definition;
 }
Esempio n. 17
0
 public Field(Dictionary.Field definition, OrderCategory value)
     : this(definition.Tag, value)
 {
     Definition = definition;
 }
Esempio n. 18
0
 public MissingFieldException(Dictionary.Field field)
     : base($"Message does not contain a {field.Name} field")
 {
 }
Esempio n. 19
0
 public Field(Dictionary.Field definition, SecurityIDSource value)
     : this(definition.Tag, value)
 {
     Definition = definition;
 }