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)); } } }
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)); } } }