Ejemplo n.º 1
0
 private static decimal DeserializeChange(BitArrayReader reader, RefPair <decimal, decimal> info)
 {
     info.First = reader.ReadDecimal(info.First);
     return(info.First);
 }
Ejemplo n.º 2
0
        public static decimal ReadPrice(this BitArrayReader reader, decimal prevPrice, MetaInfo info, bool useLong = false)
        {
            var count = useLong ? reader.ReadLong() : reader.ReadInt();

            return(prevPrice + count * info.PriceStep);
        }
Ejemplo n.º 3
0
        public static DateTimeOffset ReadTime(this BitArrayReader reader, ref DateTime prevTime, bool allowNonOrdered, bool isUtc, TimeSpan offset, bool allowDiffOffsets, bool isTickPrecision, ref TimeSpan prevOffset, bool bigRange = false)
        {
            if (allowDiffOffsets)
            {
                if (!reader.Read())
                {
                    prevOffset = new TimeSpan(reader.ReadInt(), reader.Read() ? 0 : reader.ReadInt(), 0);
                }

                offset = prevOffset;
            }

            long time;

            if (allowNonOrdered)
            {
                time = 0;

                var sign = reader.Read() ? 1 : -1;

                if (reader.Read())
                {
                    if (reader.Read())
                    {
                        time += reader.Read(5) * TimeSpan.TicksPerHour;
                    }
                    else
                    {
                        time += reader.ReadInt() * TimeSpan.TicksPerHour;

                        if (reader.Read())
                        {
                            time += reader.ReadInt() * TimeSpan.TicksPerDay;
                        }
                    }

                    time += reader.Read(6) * TimeSpan.TicksPerMinute;
                    time += reader.Read(6) * TimeSpan.TicksPerSecond;
                }
                else
                {
                    time += reader.ReadInt() * TimeSpan.TicksPerSecond;
                }

                time += reader.ReadInt() * TimeSpan.TicksPerMillisecond;

                if (isTickPrecision)
                {
                    time += reader.ReadInt();
                }

                time = prevTime.Ticks + sign * time;
            }
            else
            {
                time = prevTime.Ticks;

                if (reader.Read())
                {
                    time -= time % TimeSpan.TicksPerDay;

                    time += reader.Read(5) * TimeSpan.TicksPerHour;
                    time += reader.Read(6) * TimeSpan.TicksPerMinute;
                    time += reader.Read(6) * TimeSpan.TicksPerSecond;
                }
                else
                {
                    time += reader.ReadInt() * TimeSpan.TicksPerSecond;
                }

                time += reader.ReadInt() * TimeSpan.TicksPerMillisecond;
            }

            prevTime = new DateTime(time, isUtc ? DateTimeKind.Utc : DateTimeKind.Unspecified);

            return((isUtc ? new DateTime(time + offset.Ticks) : prevTime).ApplyTimeZone(offset));
        }
Ejemplo n.º 4
0
        private static QuoteChange[] DeserializeQuotes(BitArrayReader reader, QuoteMetaInfo metaInfo, bool useLong, bool nonAdjustPrice)
        {
            if (reader == null)
            {
                throw new ArgumentNullException(nameof(reader));
            }

            if (metaInfo == null)
            {
                throw new ArgumentNullException(nameof(metaInfo));
            }

            var count = reader.ReadInt();

            if (count == 0)
            {
                return(ArrayHelper.Empty <QuoteChange>());
            }

            var is56 = metaInfo.Version >= MarketDataVersions.Version56;
            var is57 = metaInfo.Version >= MarketDataVersions.Version57;
            var is58 = metaInfo.Version >= MarketDataVersions.Version58;

            var quotes = new QuoteChange[count];

            for (var i = 0; i < count; i++)
            {
                var prevPrice = metaInfo.FirstPrice;
                var price     = reader.ReadPrice(ref prevPrice, metaInfo, useLong, nonAdjustPrice);
                metaInfo.FirstPrice = prevPrice;

                var volume = reader.ReadVolume(metaInfo);

                var ordersCount = is56
                                        ? reader.ReadNullableInt()
                                        : null;

                var condition = is57
                                        ? (QuoteConditions)(reader.ReadNullableInt() ?? 0)
                                        : default;

                var quote = new QuoteChange(price, volume, ordersCount, condition);

                if (is58)
                {
                    if (reader.Read())
                    {
                        quote.Action = (QuoteChangeActions)reader.ReadInt();
                    }

                    if (reader.Read())
                    {
                        quote.StartPosition = reader.ReadInt();
                    }

                    if (reader.Read())
                    {
                        quote.EndPosition = reader.ReadInt();
                    }
                }

                quotes[i] = quote;
            }

            return(quotes);
        }
Ejemplo n.º 5
0
 public static string ReadString(this BitArrayReader reader)
 {
     throw new NotImplementedException();
 }
Ejemplo n.º 6
0
        private static decimal ReadPrice(this BitArrayReader reader, decimal prevPrice, decimal priceStep, bool useLong)
        {
            var count = useLong ? reader.ReadLong() : reader.ReadInt();

            return(prevPrice + count * priceStep);
        }
Ejemplo n.º 7
0
 public static bool?ReadNullableBool(this BitArrayReader reader)
 => reader.Read() ? reader.Read() : (bool?)null;
            public MarketDataEnumerator(BinaryMarketDataSerializer <TData, TMetaInfo> serializer, BitArrayReader reader, TMetaInfo metaInfo)
            {
                Serializer = serializer ?? throw new ArgumentNullException(nameof(serializer));
                Index      = -1;
                Reader     = reader ?? throw new ArgumentNullException(nameof(reader));

                _originalMetaInfo = metaInfo ?? throw new ArgumentNullException(nameof(metaInfo));
            }
Ejemplo n.º 9
0
 public static DateTimeOffset?ReadDto(this BitArrayReader reader)
 {
     return(reader.Read() ? reader.ReadLong().To <DateTime>().ApplyTimeZone(new TimeSpan(reader.ReadInt(), reader.ReadInt(), 0)) : (DateTimeOffset?)null);
 }
Ejemplo n.º 10
0
 public static void ReadSeqNum <TMessage>(this BitArrayReader reader, TMessage message, BinaryMetaInfo metaInfo)
     where TMessage : ISeqNumMessage
 {
     metaInfo.FirstSeqNum += reader.ReadLong();
     message.SeqNum        = metaInfo.FirstSeqNum;
 }
Ejemplo n.º 11
0
 public static string ReadStringEx(this BitArrayReader reader)
 {
     return(reader.Read() ? reader.ReadString() : null);
 }
Ejemplo n.º 12
0
        public static decimal ReadDecimal(this BitArrayReader reader, decimal prevPrice)
        {
            var diff = reader.ReadDecimal();

            return(prevPrice + diff);
        }
Ejemplo n.º 13
0
 public GREHeader(BitArrayReader dataGram, int nReceived)
 {
 }
Ejemplo n.º 14
0
 public static Sides?ReadSide(this BitArrayReader reader)
 {
     return(reader.Read() ? (reader.Read() ? Sides.Buy : Sides.Sell) : (Sides?)null);
 }
Ejemplo n.º 15
0
 public static Sides?ReadNullableSide(this BitArrayReader reader)
 => reader.Read() ? reader.Read() ? Sides.Buy : Sides.Sell : (Sides?)null;
Ejemplo n.º 16
0
        public static string ReadString(this BitArrayReader reader)
        {
            var len = reader.ReadInt();

            return(Encoding.UTF8.GetString(reader.ReadArray(len).To <BitArray>().To <byte[]>()));
        }
Ejemplo n.º 17
0
 public static decimal?ReadNullableDecimal(this BitArrayReader reader)
 => reader.Read() ? reader.ReadDecimal() : (decimal?)null;
Ejemplo n.º 18
0
            public MarketDataEnumerator(BinaryMarketDataSerializer <TData, TMetaInfo> serializer, BitArrayReader reader, TMetaInfo metaInfo)
            {
                if (serializer == null)
                {
                    throw new ArgumentNullException("serializer");
                }

                if (reader == null)
                {
                    throw new ArgumentNullException("reader");
                }

                if (metaInfo == null)
                {
                    throw new ArgumentNullException("metaInfo");
                }

                Serializer = serializer;
                Index      = -1;
                Reader     = reader;

                _originalMetaInfo = metaInfo;
            }
Ejemplo n.º 19
0
 public EIGRPHeader(BitArrayReader dataGram, int nReceived)
 {
 }