Ejemplo n.º 1
0
        public static void ReadFrom(BinaryReader reader, FIXGroup group)
        {
            int num = reader.ReadInt32();

            for (int index = 0; index < num; ++index)
            {
                int     tag     = reader.ReadInt32();
                FIXType fixType = EFIXFieldTypes.GetFIXType(tag);
                switch (fixType)
                {
                case FIXType.Bool:
                    group.AddBoolField(tag, reader.ReadBoolean());
                    break;

                case FIXType.Int:
                    group.AddIntField(tag, reader.ReadInt32());
                    break;

                case FIXType.Double:
                    group.AddDoubleField(tag, reader.ReadDouble());
                    break;

                case FIXType.Char:
                    group.AddCharField(tag, reader.ReadChar());
                    break;

                case FIXType.String:
                    group.AddStringField(tag, reader.ReadString());
                    break;

                case FIXType.DateTime:
                    group.AddDateTimeField(tag, new DateTime(reader.ReadInt64()));
                    break;

                default:
                    throw new ArgumentException("" + fixType.ToString());
                }
            }
        }
        protected void ConvertMessage(QuickFix.Message srcMessage, FIXMessage dstMessage)
        {
            foreach (Field field1 in srcMessage)
            {
                int field2 = field1.getField();
                switch (EFIXFieldTypes.GetFIXType(field2))
                {
                case FIXType.Bool:
                    dstMessage.SetBoolValue(field2, srcMessage.getBoolean(field2));
                    continue;

                case FIXType.Int:
                    dstMessage.SetIntValue(field2, srcMessage.getInt(field2));
                    continue;

                case FIXType.Double:
                    dstMessage.SetDoubleValue(field2, srcMessage.getDouble(field2));
                    continue;

                case FIXType.Char:
                    dstMessage.SetCharValue(field2, srcMessage.getChar(field2));
                    continue;

                case FIXType.String:
                    dstMessage.SetStringValue(field2, srcMessage.getString(field2));
                    continue;

                case FIXType.DateTime:
                    DateTime?nullable = new DateTime?();
                    if (!nullable.HasValue)
                    {
                        try
                        {
                            nullable = new DateTime?(srcMessage.getUtcTimeStamp(field2));
                        }
                        catch
                        {
                        }
                    }
                    if (!nullable.HasValue)
                    {
                        try
                        {
                            nullable = new DateTime?(srcMessage.getUtcDateOnly(field2));
                        }
                        catch
                        {
                        }
                    }
                    if (!nullable.HasValue)
                    {
                        try
                        {
                            nullable = new DateTime?(srcMessage.getUtcTimeOnly(field2));
                        }
                        catch
                        {
                        }
                    }
                    if (nullable.HasValue)
                    {
                        dstMessage.SetDateTimeValue(field2, nullable.Value);
                        continue;
                    }
                    else
                    {
                        continue;
                    }

                default:
                    continue;
                }
            }
        }