public static bool ReadResult(ProtoReaderContext context) { if (context.ReadFieldHeader() == NoneFieldHeader) { return(false); } if (context.CurrentFieldHeader != ResultFieldHeader) { throw new InvalidDataException($"Field header '{ResultFieldHeader}' expected, actual '{context.CurrentFieldHeader}'."); } context.StartSubItem(); if (context.ReadFieldHeader() == NoneFieldHeader) { // TODO: Clear buffer and reset columns. context.ReachedEndOfCurrentResult = true; context.EndSubItem(); return(true); } ColumnsReader.ReadColumns(context); context.ReachedEndOfCurrentResult = false; return(true); }
private static IEnumerable <ProtoDataColumn> ReadColumnsImpl(ProtoReaderContext context) { do { context.StartSubItem(); var name = ReadColumnName(context); var protoDataType = ReadColumnType(context); // Backwards compatibility or unnecessary? while (context.ReadFieldHeader() != NoneFieldHeader) { context.Reader.SkipField(); } context.EndSubItem(); yield return(new ProtoDataColumn(name: name, dataType: TypeHelper.GetType(protoDataType), protoBufDataType: protoDataType)); }while (context.ReadFieldHeader() == ColumnFieldHeader); }