示例#1
0
        public IndexStore.Record GetEntry(ulong fileHash)
        {
            Encoding.Entry encodingRecord;

            if (Root.TryGetByHash(fileHash, out var rootRecord))
            {
                if (!Encoding.TryGetValue(rootRecord.MD5, out encodingRecord))
                {
                    return(null);
                }
            }
            else if (Install.HasFile(fileHash))
            {
                var installEntry = Install.GetEntriesByHash(fileHash).First();
                if (!Encoding.TryGetValue(installEntry.MD5, out encodingRecord))
                {
                    return(null);
                }
            }
            else
            {
                return(null);
            }

            if (!Indices.TryGetValue(encodingRecord.Key, out var indexEntry))
            {
                return(new IndexStore.Record
                {
                    Offset = 0,
                    Size = -1,
                    ArchiveIndex = -1, // Use as a marker for whole-size archives
                    Hash = encodingRecord.Key
                });
            }

            return(indexEntry);
        }