public bool Read(BinaryReader reader, bool loadLatestData, bool loadAllPasses) { var Header = new SubGridStreamHeader(reader); StartTime = Header.StartTime; EndTime = Header.EndTime; // Read the version etc from the stream if (!Header.IdentifierMatches(SubGridStreamHeader.kICServerSubGridLeafFileMoniker)) { Log.LogError($"Sub grid segment file moniker (expected {SubGridStreamHeader.kICServerSubGridLeafFileMoniker}, found {Header.Identifier}). Stream size/position = {reader.BaseStream.Length}{reader.BaseStream.Position}"); return(false); } if (!Header.IsSubGridSegmentFile) { Log.LogCritical("Sub grid grid segment file does not identify itself as such in extended header flags"); return(false); } bool Result = false; if (Header.Version == 1) { Result = LoadPayloadFromStream(reader, loadLatestData, loadAllPasses); } else { Log.LogError($"Sub grid segment file version mismatch (expected {SubGridStreamHeader.VERSION_NUMBER}, found {Header.Version}). Stream size/position = {reader.BaseStream.Length}{reader.BaseStream.Position}"); } return(Result); }
public bool Write(BinaryWriter writer) { // Write the version to the stream var Header = new SubGridStreamHeader { Identifier = SubGridStreamHeader.kICServerSubGridLeafFileMoniker, Flags = SubGridStreamHeader.kSubGridHeaderFlag_IsSubGridSegmentFile, StartTime = SegmentInfo?.StartTime ?? StartTime, EndTime = SegmentInfo?.EndTime ?? EndTime, LastUpdateTimeUTC = DateTime.UtcNow }; Header.Write(writer); SavePayloadToStream(writer); return(true); }