public FileLockManager() { this.fLocks = new List <FileLockItem>(); this.BlockDeletePermissionList = new List <FileLockItem>(); this.pDeleteOnClose = false; this.plastAccess = new FileLastAccessControl(); }
/// <summary> /// Sets the information that the vItem was changed. If SetLastAccess=true, the information that the vItem was accessed is also set. /// </summary> /// <param name="vItem"></param> /// <param name="setLastAccess"></param> public static void SetLastWrite(IFuserFilesystemItem vItem, bool setLastAccess) { try { if (vItem == null) { return; } if (vItem.Filelock == null) { return; } FileLastAccessControl flac = vItem.Filelock.getLastAccessControl; if (flac == null) { return; } lock (flac) { flac.SetLastWrite(); if (setLastAccess) { flac.SetLastAccess(); } } } catch { return; } }
public FileHandler(string filename) { this.pFilename = filename; this.curItem = null; this.curDir = null; this.UseOPLocks = true;// by default, OPLocks must be checked this.pIsOpenRead = false; this.pIsOpenWrite = false; this.pData = null; this.pLocks = new List <FileLockItem>(); this.pLocks.Clear(); this.pFileLastAccess = new FileLastAccessControl(); }
/// <summary> /// Writes the LastAccessed and LastModified information, if they have been changed, to the file. For files, the archive attribute is also set if necessary. /// </summary> /// <param name="vItem"></param> public static void WriteLastWriteAndAccess(IFuserFilesystemItem vItem) { try { bool las = false; bool lws = false; bool IsDir = false; DateTime lat = DateTime.MinValue; DateTime lwt = DateTime.MinValue; if (vItem == null) { return; } if (vItem.Filelock == null) { return; } IsDir = (vItem is IFuserFilesystemDirectory); FileLastAccessControl flac = vItem.Filelock.getLastAccessControl; if (flac == null) { return; } lock (flac) { las = flac.IsLastAccessSet; lws = flac.IsLastWriteSet; if (las) { lat = flac.LastAccessTime; } if (lws) { lwt = flac.LastWriteTime; } if (las || lws) { flac.Rest(); // if there are any changes, reset them all. } } if (!las && !lws) { return; // nothing to do } lock (vItem) { if (las) { vItem.LastAccessTime = lat; } if (lws) { vItem.LastWriteTime = lwt; if (!IsDir) { vItem.isArchive = true; } } } } catch { return; } }