You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4net-dev@logging.apache.org by ni...@apache.org on 2004/06/02 18:17:09 UTC

cvs commit: logging-log4net/src/Core WrapperMap.cs

nicko       2004/06/02 09:17:09

  Modified:    src/Core WrapperMap.cs
  Log:
  Made the ILoggerRepository Shutdown event handler delegate method private. Added a new overridable method RepositoryShutdown.
  
  Revision  Changes    Path
  1.4       +21 -11    logging-log4net/src/Core/WrapperMap.cs
  
  Index: WrapperMap.cs
  ===================================================================
  RCS file: /home/cvs/logging-log4net/src/Core/WrapperMap.cs,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- WrapperMap.cs	23 Feb 2004 03:18:03 -0000	1.3
  +++ WrapperMap.cs	2 Jun 2004 16:17:09 -0000	1.4
  @@ -59,7 +59,7 @@
   			m_createWrapperHandler = createWrapperHandler;
   
   			// Create the delegates for the event callbacks
  -			m_shutdownHandler = new LoggerRepositoryShutdownEventHandler(OnShutdown);
  +			m_shutdownHandler = new LoggerRepositoryShutdownEventHandler(ILoggerRepository_Shutdown);
   		}
   
   		#endregion Public Instance Constructors
  @@ -160,22 +160,32 @@
   		}
   
   		/// <summary>
  +		/// Called when a monitored repository shutdown event is received.
  +		/// </summary>
  +		/// <param name="repository">The <see cref="ILoggerRepository"/> that is shutting down</param>
  +		virtual protected void RepositoryShutdown(ILoggerRepository repository)
  +		{
  +			lock(this)
  +			{
  +				// Remove all repository from map
  +				m_repositories.Remove(repository);
  +
  +				// Unhook all events from the repository
  +				repository.ShutdownEvent -= m_shutdownHandler;
  +			}
  +		}
  +
  +		/// <summary>
   		/// Event handler for repository shutdown event.
   		/// </summary>
   		/// <param name="sender">The sender of the event.</param>
   		/// <param name="e">The event args.</param>
  -		virtual protected void OnShutdown(object sender, EventArgs e)
  +		private void ILoggerRepository_Shutdown(object sender, EventArgs e)
   		{
  -			lock(this)
  +			if (sender is ILoggerRepository)
   			{
  -				if (sender is ILoggerRepository)
  -				{
  -					// Remove all repository from map
  -					m_repositories.Remove(sender);
  -
  -					// Unhook all events from the repository
  -					((ILoggerRepository)sender).ShutdownEvent -= m_shutdownHandler;
  -				}
  +				// Remove all repository from map
  +				RepositoryShutdown((ILoggerRepository)sender);
   			}
   		}