Beispiel #1
0
 protected override void LoadExtraHeader(BinaryReader reader)
 {
     loadedTagCount         = reader.ReadByte();
     loadedDataOffset       = reader.ReadUInt16();
     loadedIdentifierLength = reader.ReadByte();
     Timestamp   = DateTime.FromBinary(reader.ReadInt64());
     Duration    = TimeSpan.FromTicks(reader.ReadInt64());
     loadedParts = 0;
 }
Beispiel #2
0
 protected override void LoadData(BinaryReader reader)
 {
     if (!loadedParts.HasFlag(LoadedParts.Identifier))
     {
         loadedParts |= LoadedParts.Identifier;
         byte[] identData = reader.ReadBytes(loadedIdentifierLength);
         Identifier = Encoding.UTF8.GetString(identData);
     }
     else if (!loadedParts.HasFlag(LoadedParts.Tags))
     {
         loadedParts |= LoadedParts.Tags;
         reader.BaseStream.Seek(loadedIdentifierLength, SeekOrigin.Current);
         for (int i = 0; i < loadedTagCount; i++)
         {
             DateTime stamp      = DateTime.FromBinary(reader.ReadInt64());
             byte     nameLength = reader.ReadByte();
             UInt16   dataLength = reader.ReadUInt16();
             byte[]   nameData   = reader.ReadBytes(nameLength);
             byte[]   tagData    = reader.ReadBytes(dataLength);
             Tags.Add(new Tag()
             {
                 Name      = Encoding.UTF8.GetString(nameData),
                 Data      = tagData,
                 Timestamp = stamp,
             });
         }
     }
     else if (!loadedParts.HasFlag(LoadedParts.Frame))
     {
         loadedParts |= LoadedParts.Frame;
         reader.BaseStream.Seek(loadedDataOffset, SeekOrigin.Current);
         UInt32        remains = (UInt32)(DataSize - loadedDataOffset);
         List <byte[]> chunks  = new List <byte[]>();
         while (remains != 0)
         {
             UInt32 chunkSize = reader.ReadUInt32();
             chunks.Add(reader.ReadBytes((Int32)chunkSize));
             remains -= 4 + chunkSize;
         }
         FrameData = chunks.ToArray();
     }
 }
Beispiel #3
0
 public RecordHeader()
 {
     loadedParts = LoadedParts.Frame | LoadedParts.Identifier | LoadedParts.Tags;
 }