protected virtual bool AcceptsDirectoryActivity(FileSystemActivityEventArgs eventArgs) { int x; if (eventArgs.Path.Length == this.Address.AbsolutePath.Length) { return(false); } x = eventArgs.Path.CountChars(c => c == '/'); if (x == 1) { return(true); } else if (x == 0) { return(false); } else { x = eventArgs.Path.LastIndexOf('/'); return(this.FileSystem.PathsEqual(eventArgs.Path, this.Address.AbsolutePath, x)); } }
protected virtual void OnActivity(FileSystemActivityEventArgs eventArgs) { if (Activity != null) { Activity(this, eventArgs); } }
protected virtual bool AcceptsRecursiveActivity(FileSystemActivityEventArgs eventArgs) { if (eventArgs.Path.Length == this.Address.AbsolutePath.Length) { return(false); } return(this.FileSystem.PathsEqual(eventArgs.Path, this.Address.AbsolutePath, this.Address.AbsolutePath.Length)); }
protected virtual void OnActivity(FileSystemActivityEventArgs eventArgs) { if (Activity != null) { var node = this.Resolve(eventArgs.Path, eventArgs.NodeType); if (this.SecurityManager.CurrentContext.HasAccess(new AccessVerificationContext(node, FileSystemSecuredOperation.View))) { Activity(this, eventArgs); } } }
private void FileSystemsActivity(object sender, FileSystemActivityEventArgs eventArgs) { if (activityEvents != null) { if (this.SecurityManager.CurrentContext.IsEmpty) { activityEvents(this, eventArgs); } else { var node = this.Resolve(eventArgs.Path, eventArgs.NodeType); if (this.SecurityManager.CurrentContext.HasAccess(new AccessVerificationContext(node, FileSystemSecuredOperation.View))) { activityEvents(this, eventArgs); } } } }
protected virtual void FileSystem_Activity(object sender, FileSystemActivityEventArgs eventArgs) { if (!this.FileSystem.SecurityManager.CurrentContext.HasAccess(new AccessVerificationContext(this, FileSystemSecuredOperation.View))) { return; } if (!AcceptsActivity(eventArgs)) { return; } Refresh(); switch (eventArgs.Activity) { case FileSystemActivity.Changed: OnActivity(new NodeActivityEventArgs(eventArgs.Activity, this)); OnChanged(new NodeActivityEventArgs(eventArgs.Activity, this)); break; case FileSystemActivity.Created: OnActivity(new NodeActivityEventArgs(eventArgs.Activity, this)); OnCreated(new NodeActivityEventArgs(eventArgs.Activity, this)); break; case FileSystemActivity.Deleted: OnActivity(new NodeActivityEventArgs(eventArgs.Activity, this)); OnDeleted(new NodeActivityEventArgs(eventArgs.Activity, this)); break; case FileSystemActivity.Renamed: var renamedEventArgs = (FileSystemRenamedActivityEventArgs)eventArgs; OnActivity(new NodeActivityEventArgs(eventArgs.Activity, this, renamedEventArgs.Name)); OnRenamed(new NodeActivityEventArgs(eventArgs.Activity, this, renamedEventArgs.Name)); break; } }
internal static void RaiseActivityEvent(NetworkFileSystem networkFileSystem, FileSystemActivityEventArgs eventArgs) { var uniqueId = networkFileSystem.GetUniqueId(); lock (staticFileSystemsCache) { IList<NetworkFileSystemWeakReference> fileSystems; if (staticFileSystemsCache.TryGetValue(uniqueId, out fileSystems)) { var node = networkFileSystem.Resolve(eventArgs.Path, eventArgs.NodeType); foreach (var reference in fileSystems) { var fileSystem = reference.Target; if (fileSystem != null) { var currentNode = fileSystem.Resolve(eventArgs.Path, eventArgs.NodeType); lock (currentNode.Attributes.SyncLock) { if (currentNode != node) { foreach (var attribute in node.Attributes) { ((NetworkNodeAndFileAttributes)currentNode.Attributes).SetValue<object>(attribute.Key, attribute.Value, false); } } } fileSystem.OnActivity(eventArgs); } } } } }
internal static void RaiseActivityEvent(NetworkFileSystem networkFileSystem, FileSystemActivityEventArgs eventArgs) { var uniqueId = networkFileSystem.GetUniqueId(); lock (staticFileSystemsCache) { IList <NetworkFileSystemWeakReference> fileSystems; if (staticFileSystemsCache.TryGetValue(uniqueId, out fileSystems)) { var node = networkFileSystem.Resolve(eventArgs.Path, eventArgs.NodeType); foreach (var reference in fileSystems) { var fileSystem = reference.Target; if (fileSystem != null) { var currentNode = fileSystem.Resolve(eventArgs.Path, eventArgs.NodeType); lock (currentNode.Attributes.SyncLock) { if (currentNode != node) { foreach (var attribute in node.Attributes) { ((NetworkNodeAndFileAttributes)currentNode.Attributes).SetValue <object>(attribute.Key, attribute.Value, false); } } } fileSystem.OnActivity(eventArgs); } } } } }
protected override void FileSystem_Activity(object sender, FileSystemActivityEventArgs eventArgs) { INode node = null; if (AcceptsDirectoryActivity(eventArgs)) { node = this.FileSystem.Resolve(eventArgs.Path, eventArgs.NodeType); if (eventArgs is FileSystemRenamedActivityEventArgs) { OnDirectoryActivity(new NodeActivityEventArgs(eventArgs.Activity, node, ((FileSystemRenamedActivityEventArgs)eventArgs).NewName)); } else { OnDirectoryActivity(new NodeActivityEventArgs(eventArgs.Activity, node)); } } if (AcceptsRecursiveActivity(eventArgs) && InvokeRecursiveActivityRequired) { if (node == null) { node = this.FileSystem.Resolve(eventArgs.Path, eventArgs.NodeType); } if (eventArgs is FileSystemRenamedActivityEventArgs) { OnRecursiveActivity(new NodeActivityEventArgs(eventArgs.Activity, node, ((FileSystemRenamedActivityEventArgs)eventArgs).NewName)); } else { OnRecursiveActivity(new NodeActivityEventArgs(eventArgs.Activity, node)); } } base.FileSystem_Activity(sender, eventArgs); }
protected override void FileSystem_Activity(object sender, FileSystemActivityEventArgs eventArgs) { INode node = null; if (AcceptsDirectoryActivity(eventArgs)) { node = this.FileSystem.Resolve(eventArgs.Path, eventArgs.NodeType); if (eventArgs is FileSystemRenamedActivityEventArgs) { OnDirectoryActivity(new NodeActivityEventArgs(eventArgs.Activity, node, ((FileSystemRenamedActivityEventArgs) eventArgs).NewName)); } else { OnDirectoryActivity(new NodeActivityEventArgs(eventArgs.Activity, node)); } } if (AcceptsRecursiveActivity(eventArgs) && InvokeRecursiveActivityRequired) { if (node == null) { node = this.FileSystem.Resolve(eventArgs.Path, eventArgs.NodeType); } if (eventArgs is FileSystemRenamedActivityEventArgs) { OnRecursiveActivity(new NodeActivityEventArgs(eventArgs.Activity, node, ((FileSystemRenamedActivityEventArgs)eventArgs).NewName)); } else { OnRecursiveActivity(new NodeActivityEventArgs(eventArgs.Activity, node)); } } base.FileSystem_Activity(sender, eventArgs); }
protected virtual bool AcceptsDirectoryActivity(FileSystemActivityEventArgs eventArgs) { int x; if (eventArgs.Path.Length == this.Address.AbsolutePath.Length) { return false; } x = eventArgs.Path.CountChars(c => c == '/'); if (x == 1) { return true; } else if (x == 0) { return false; } else { x = eventArgs.Path.LastIndexOf('/'); return this.FileSystem.PathsEqual(eventArgs.Path, this.Address.AbsolutePath, x); } }
protected virtual bool AcceptsRecursiveActivity(FileSystemActivityEventArgs eventArgs) { if (eventArgs.Path.Length == this.Address.AbsolutePath.Length) { return false; } return this.FileSystem.PathsEqual(eventArgs.Path, this.Address.AbsolutePath, this.Address.AbsolutePath.Length); }
protected virtual bool AcceptsActivity(FileSystemActivityEventArgs eventArgs) { return(((eventArgs.NodeType == this.NodeType) || (eventArgs.NodeType == NodeType.Any)) && ((this.FileSystem.PathsEqual(eventArgs.Path, this.Address.AbsolutePath, Math.Max(this.Address.AbsolutePath.Length, eventArgs.Path.Length))) || (eventArgs.Path == "*"))); }