private static decimal DeserializeChange(BitArrayReader reader, RefPair <decimal, decimal> info) { info.First = reader.ReadDecimal(info.First); return(info.First); }
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); }
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)); }
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); }
public static string ReadString(this BitArrayReader reader) { throw new NotImplementedException(); }
private static decimal ReadPrice(this BitArrayReader reader, decimal prevPrice, decimal priceStep, bool useLong) { var count = useLong ? reader.ReadLong() : reader.ReadInt(); return(prevPrice + count * priceStep); }
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)); }
public static DateTimeOffset?ReadDto(this BitArrayReader reader) { return(reader.Read() ? reader.ReadLong().To <DateTime>().ApplyTimeZone(new TimeSpan(reader.ReadInt(), reader.ReadInt(), 0)) : (DateTimeOffset?)null); }
public static void ReadSeqNum <TMessage>(this BitArrayReader reader, TMessage message, BinaryMetaInfo metaInfo) where TMessage : ISeqNumMessage { metaInfo.FirstSeqNum += reader.ReadLong(); message.SeqNum = metaInfo.FirstSeqNum; }
public static string ReadStringEx(this BitArrayReader reader) { return(reader.Read() ? reader.ReadString() : null); }
public static decimal ReadDecimal(this BitArrayReader reader, decimal prevPrice) { var diff = reader.ReadDecimal(); return(prevPrice + diff); }
public GREHeader(BitArrayReader dataGram, int nReceived) { }
public static Sides?ReadSide(this BitArrayReader reader) { return(reader.Read() ? (reader.Read() ? Sides.Buy : Sides.Sell) : (Sides?)null); }
public static Sides?ReadNullableSide(this BitArrayReader reader) => reader.Read() ? reader.Read() ? Sides.Buy : Sides.Sell : (Sides?)null;
public static string ReadString(this BitArrayReader reader) { var len = reader.ReadInt(); return(Encoding.UTF8.GetString(reader.ReadArray(len).To <BitArray>().To <byte[]>())); }
public static decimal?ReadNullableDecimal(this BitArrayReader reader) => reader.Read() ? reader.ReadDecimal() : (decimal?)null;
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; }
public EIGRPHeader(BitArrayReader dataGram, int nReceived) { }