Ejemplo n.º 1
0
        public static FileNode Load([NotNull] IBlockAllocator allocator, [NotNull] IDirectDiskAccess diskAccess, [NotNull] Address address, [NotNull] Address globalBlockStartAddress)
        {
            Validate.ArgumentNotNull(allocator, "allocator");
            Validate.ArgumentNotNull(diskAccess, "diskAccess");
            Validate.ArgumentNotNull(address, "address");
            Validate.ArgumentNotNull(globalBlockStartAddress, "globalBlockStartAddress");

            var node = new FileNode(allocator, diskAccess, address, globalBlockStartAddress);
            node.Load();
            return node;
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Initializes a new instance of the <see cref="VirtualFile"/> class.
        /// </summary>
        /// <param name="node">The node.</param>
        /// <param name="canWrite">If set to <c>true</c>, file is opened for writing.</param>
        /// <exception cref="ArgumentException">Cannot open directory as file.</exception>
        public VirtualFile([NotNull] FileNode node, bool canWrite)
        {
            Validate.ArgumentNotNull(node, "node");

            if (node.IsDirectory)
            {
               throw new ArgumentException("Cannot open directory as file.");
            }

            _node = node;
            _canWrite = canWrite;
        }
Ejemplo n.º 3
0
        public static FileNode Create([NotNull] IBlockAllocator allocator, [NotNull] IDirectDiskAccess diskAccess, [NotNull] Address address, [NotNull] Address globalBlockStartAddress)
        {
            Validate.ArgumentNotNull(allocator, "allocator");
            Validate.ArgumentNotNull(diskAccess, "diskAccess");
            Validate.ArgumentNotNull(address, "address");
            Validate.ArgumentNotNull(globalBlockStartAddress, "globalBlockStartAddress");

            var node = new FileNode(allocator, diskAccess, address, globalBlockStartAddress);
            using (NodeLocker.Lock(node, true))
            {
                node.Save();
                return node;
            }
        }
Ejemplo n.º 4
0
 public NodeStorage(FileNode node)
 {
     _node = node;
 }
Ejemplo n.º 5
0
        /// <summary>
        /// Closes the current file, releasing resources.
        /// </summary>
        public void Close()
        {
            CheckDisposed();
            if (_canWrite)
            {
                _node.UnlockWrite();
            }
            else
            {
                _node.UnlockRead();
            }

            // node should not be disposed. It is located in master cache.
            _node = null;
        }