コード例 #1
0
ファイル: File.cs プロジェクト: ilf80/FS
        public File(
            IDirectoryCache directoryCache,
            IFileParameters fileParameters,
            IFactory <IIndexBlockProvider, int, ICommonAccessParameters> indexBlockProviderFactory,
            IFactory <IIndex <byte>, IIndexBlockProvider, ICommonAccessParameters> indexFactory,
            IFactory <IBlockStream <byte>, IBlockProvider <byte> > blockStreamFactory)
        {
            if (fileParameters == null)
            {
                throw new ArgumentNullException(nameof(fileParameters));
            }

            if (indexBlockProviderFactory == null)
            {
                throw new ArgumentNullException(nameof(indexBlockProviderFactory));
            }

            if (blockStreamFactory == null)
            {
                throw new ArgumentNullException(nameof(blockStreamFactory));
            }

            this.directoryCache = directoryCache ?? throw new ArgumentNullException(nameof(directoryCache));

            directoryBlockId = fileParameters.ParentDirectoryBlockId;
            Size             = fileParameters.Size;

            var provider = indexBlockProviderFactory.Create(fileParameters.BlockId, this.directoryCache);

            index       = indexFactory.Create(provider, directoryCache);
            blockStream = blockStreamFactory.Create(index);
        }
コード例 #2
0
ファイル: Index.cs プロジェクト: ilf80/FS
        public Index(
            IIndexBlockProvider provider,
            IFactory <IBlockStream <int>, IBlockProvider <int> > blockStreamFactory,
            ICommonAccessParameters accessParameters)
        {
            this.provider         = provider ?? throw new ArgumentNullException(nameof(provider));
            this.accessParameters = accessParameters ?? throw new ArgumentNullException(nameof(accessParameters));
            if (blockStreamFactory == null)
            {
                throw new ArgumentNullException(nameof(blockStreamFactory));
            }

            indexBlockStream = blockStreamFactory.Create(this.provider);
        }
コード例 #3
0
ファイル: Directory.cs プロジェクト: ilf80/FS
        public Directory(
            IIndex <DirectoryItem> index,
            IDirectoryCache directoryCache,
            DirectoryHeader header,
            IFactory <IIndexBlockProvider, int, ICommonAccessParameters> indexBlockProviderFactory,
            IFactory <IIndex <short>, IIndexBlockProvider, ICommonAccessParameters> indexFactory,
            IFactory <IBlockStream <short>, IBlockProvider <short> > blockStreamFactory,
            IFactory <IIndex <DirectoryItem>, IIndexBlockProvider, ICommonAccessParameters> directoryIndexFactory,
            IFactory <IDirectory, IIndex <DirectoryItem>, IDirectoryCache, DirectoryHeader> directoryFactory,
            IFactory <IFile, IFileParameters, IDirectoryCache> fileFactory,
            IFactory <IBlockStream <DirectoryItem>, IBlockProvider <DirectoryItem> > directoryBlockStreamFactory,
            IFactory <IDeletionFile, IFileParameters, IDirectoryCache> deletionFileFactory,
            IFactory <IDeletionDirectory, int, IDirectoryCache> deletionDirectoryFactory
            )
        {
            if (indexFactory == null)
            {
                throw new ArgumentNullException(nameof(indexFactory));
            }

            if (directoryBlockStreamFactory == null)
            {
                throw new ArgumentNullException(nameof(directoryBlockStreamFactory));
            }

            this.index                     = index ?? throw new ArgumentNullException(nameof(index));
            this.directoryCache            = directoryCache ?? throw new ArgumentNullException(nameof(directoryCache));
            this.indexBlockProviderFactory = indexBlockProviderFactory ?? throw new ArgumentNullException(nameof(indexBlockProviderFactory));
            this.directoryIndexFactory     = directoryIndexFactory ?? throw new ArgumentNullException(nameof(directoryIndexFactory));
            this.directoryFactory          = directoryFactory ?? throw new ArgumentNullException(nameof(directoryFactory));
            this.fileFactory               = fileFactory ?? throw new ArgumentNullException(nameof(fileFactory));
            this.deletionFileFactory       = deletionFileFactory ?? throw new ArgumentNullException(nameof(deletionFileFactory));
            this.deletionDirectoryFactory  = deletionDirectoryFactory ?? throw new ArgumentNullException(nameof(deletionDirectoryFactory));

            blockStream = directoryBlockStreamFactory.Create(index);

            nameBlockIndex = header.NameBlockIndex;
            var nameIndexProvider = indexBlockProviderFactory.Create(nameBlockIndex, directoryCache);

            nameIndex            = indexFactory.Create(nameIndexProvider, directoryCache);
            nameIndexBlockStream = blockStreamFactory.Create(nameIndex);

            firstEmptyItemOffset   = header.FirstEmptyItemOffset;
            itemsCount             = header.ItemsCount;
            lastNameOffset         = header.LastNameOffset;
            parentDirectoryBlockId = header.ParentDirectoryBlockIndex;
        }
コード例 #4
0
ファイル: AllocationManager.cs プロジェクト: ilf80/FS
        public AllocationManager(
            IFactory <IIndex <int>, IAllocationManager> indexFactory,
            IFactory <IBlockStream <int>, IBlockProvider <int> > blockStreamFactory,
            IBlockStorage storage,
            int freeSpaceBlocksCount)
        {
            if (indexFactory == null)
            {
                throw new ArgumentNullException(nameof(indexFactory));
            }

            if (blockStreamFactory == null)
            {
                throw new ArgumentNullException(nameof(blockStreamFactory));
            }

            this.storage = storage ?? throw new ArgumentNullException(nameof(storage));

            index              = indexFactory.Create(this);
            blockStream        = blockStreamFactory.Create(index);
            ReleasedBlockCount = freeSpaceBlocksCount;
        }