public bool MoveNext() { if (!headerFound) { this.headerReader.Find(this.stream, out this.headerFound, out this.summaryOffset); this.kind = this.stream.ReadVarInt(); this.tick = this.stream.ReadVarInt(); this.size = this.stream.ReadVarInt(); this.msg = this.stream.ReadVarInt(); var header = DemTypes.FromValue(msg).Descriptor.Parser.ParseDelimitedFrom(this.stream); header.MergeDelimitedFrom(this.stream); this.Current = header; return(this.Current != null); } this.kind = this.stream.ReadVarInt(); this.tick = this.stream.ReadVarInt(); this.size = this.stream.ReadVarInt(); var buffer = new byte[size]; this.stream.Read(buffer, 0, buffer.Length); var summaryComplete = this.stream.Position >= (long)this.summaryOffset; this.Current = !summaryComplete?GetMessage(buffer) : null; return(!summaryComplete); }
private IMessage GetMessage(byte[] buffer) { if (this.IsCompressed) { this.ResetCompression(); buffer = SnappyCodec.Uncompress(buffer); var message = DemTypes.FromValue(kind).Descriptor.Parser.ParseFrom(buffer); message.MergeFrom(buffer); return(message); } else { var message = DemTypes.FromValue(kind).Descriptor.Parser.ParseFrom(buffer); return(message); } }