Beispiel #1
0
        /// <summary>
        /// Creates a new FileRecordInfo by parsing the name of the specified filename.
        /// </summary>
        /// <param name="filename">Name of the file to attempt to create a FileRecordInfo out of</param>
        /// <returns>FileRecordInfo on success, null on failure</returns>
        public static FileRecordInfo Create(string filename)
        {
            var match = PatternRecord.Match(filename);

            if (match.Success == false)
            {
                return(null);
            }

            var result = new FileRecordInfo {
                Hash = match.Groups["hash"].Value
            };

            var imageMatch = match.Groups["image_name"];

            if (imageMatch.Success)
            {
                result.ImagePath = imageMatch.Value;
            }
            else
            {
                result.Resource             = GetResourceType(match.Groups["resource_type"].Value);
                result.VersionHash          = match.Groups["version_hash"].Value;
                result.Payload              = GetPayloadType(match.Groups["payload_type"].Value);
                result.UnknownVersionNumber = int.Parse(match.Groups["unknown_version_number"].Value);
                result.Variant              = GetVariantType(match.Groups["variants_type"].Value);
            }

            return(result);
        }
Beispiel #2
0
        /// <summary>
        /// Reads a file record from a Bag stream.
        /// </summary>
        /// <param name="inStream">Stream containing FileRecord data. Assumes stream is already positioned to the FileRecord data</param>
        public void Read(BinaryReader inStream)
        {
            Offset      = inStream.ReadInt64();
            Length      = inStream.ReadUInt32();
            TimestampNs = inStream.ReadInt64();

            var nameLength = inStream.ReadInt32();

            Name = new string(inStream.ReadChars(nameLength));

            Info = FileRecordInfo.Create(Name);
        }