BTDB.KVDBLayer.FileCollectionWithFileInfos.LoadInfoAboutFiles C# (CSharp) Method

LoadInfoAboutFiles() public method

public LoadInfoAboutFiles ( ) : void
return void
        void LoadInfoAboutFiles()
        {
            foreach (var file in _fileCollection.Enumerate())
            {
                try
                {
                    var reader = file.GetExclusiveReader();
                    var magic = reader.ReadByteArrayRaw(MagicStartOfFile.Length);
                    Guid? guid = null;
                    if (
                        BitArrayManipulation.CompareByteArray(magic, magic.Length, MagicStartOfFileWithGuid,
                            MagicStartOfFileWithGuid.Length) == 0)
                    {
                        guid = reader.ReadGuid();
                        if (Guid.HasValue && Guid.Value != guid)
                        {
                            _fileInfos.TryAdd(file.Index, UnknownFile.Instance);
                            continue;
                        }
                        Guid = guid;
                    }
                    else if (
                        BitArrayManipulation.CompareByteArray(magic, magic.Length, MagicStartOfFile,
                            MagicStartOfFile.Length) != 0)
                    {
                        _fileInfos.TryAdd(file.Index, UnknownFile.Instance);
                        continue;
                    }
                    var fileType = (KVFileType)reader.ReadUInt8();
                    IFileInfo fileInfo;
                    switch (fileType)
                    {
                        case KVFileType.TransactionLog:
                            fileInfo = new FileTransactionLog(reader, guid);
                            break;
                        case KVFileType.KeyIndex:
                            fileInfo = new FileKeyIndex(reader, guid, false, false);
                            break;
                        case KVFileType.KeyIndexWithCommitUlong:
                            fileInfo = new FileKeyIndex(reader, guid, true, false);
                            break;
                        case KVFileType.ModernKeyIndex:
                            fileInfo = new FileKeyIndex(reader, guid, true, true);
                            break;
                        case KVFileType.PureValues:
                            fileInfo = new FilePureValues(reader, guid);
                            break;
                        case KVFileType.PureValuesWithId:
                            fileInfo = new FilePureValuesWithId(reader, guid);
                            break;
                        case KVFileType.HashKeyIndex:
                            fileInfo = new HashKeyIndex(reader, guid);
                            break;
                        default:
                            fileInfo = UnknownFile.Instance;
                            break;
                    }
                    if (_fileGeneration < fileInfo.Generation) _fileGeneration = fileInfo.Generation;
                    _fileInfos.TryAdd(file.Index, fileInfo);
                }
                catch (Exception)
                {
                    _fileInfos.TryAdd(file.Index, UnknownFile.Instance);
                }
            }
            if (!Guid.HasValue)
            {
                Guid = System.Guid.NewGuid();
            }
        }