Example #1
0
        public static decimal ReadVolume(this BitArrayReader reader, BinaryMetaInfo info, bool largeDecimal)
        {
            if (info.Version < MarketDataVersions.Version44)
            {
                if (reader.Read())
                {
                    return(reader.ReadLong());
                }
                else
                {
                    throw new NotSupportedException(LocalizedStrings.Str1011);
                }
            }
            else
            {
                if (reader.TryReadLargeDecimal(largeDecimal, out var volume))
                {
                    return(volume);
                }

                if (reader.Read())
                {
                    return(reader.ReadLong() * info.VolumeStep);
                }
                else
                {
                    return(info.FirstFractionalVolume = reader.ReadDecimal(info.FirstFractionalVolume));
                }
            }
        }
Example #2
0
        public static decimal ReadPriceEx(this BitArrayReader reader, BinaryMetaInfo info, bool useLong, bool largeDecimal)
        {
            if (info.Version < MarketDataVersions.Version41)
            {
                var prevPrice = info.FirstPrice;
                return(info.FirstPrice = reader.ReadPrice(ref prevPrice, info));
            }
            else
            {
                if (reader.TryReadLargeDecimal(largeDecimal, out var price))
                {
                    return(price);
                }

                if (reader.Read())
                {
                    var prevPrice = info.FirstPrice;
                    return(info.FirstPrice = reader.ReadPrice(ref prevPrice, info, useLong));
                }
                else
                {
                    return(info.FirstFractionalPrice = reader.ReadDecimal(info.FirstFractionalPrice));
                }
            }
        }