Пример #1
0
        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);
        }
Пример #2
0
        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);
        }