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));
            }
        }
Beispiel #2
0
 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);
				}
			}
		}
        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);
                    }
                }
            }
        }
Beispiel #7
0
        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);
		}
		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 OnActivity(FileSystemActivityEventArgs eventArgs)
		{
			if (Activity != null)
			{
				Activity(this, eventArgs);
			}
		}
Beispiel #16
0
 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 == "*")));
 }