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);
                        }
                }
   
  
  
  

Reply via email to