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; }
/// <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; }
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; } }
public NodeStorage(FileNode node) { _node = node; }
/// <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; }