static public Boolean Remove(ListenerGroup group) { lock (FListenerGroups) { ListenerGroup gNode = (ListenerGroup)FListenerGroups[group.Name]; if (gNode == null) { return(false); } if (!Object.ReferenceEquals(gNode, group)) { return(false); } if (Object.ReferenceEquals(gNode, group)) { FListenerGroups.Remove(group.Name); group.InternalDispose(false); AddDefaultListenerGroupIfNecessary(); } if (group.IsActive) { PrepareActiveGroup(); } return(true); } }
static private void AddGroup(ListenerGroup group, Boolean bFromConfig) { if (group == null) { return; } lock (FListenerGroups) { ListenerGroup gNode = (ListenerGroup)FListenerGroups[group.Name]; if (gNode != null && !Object.ReferenceEquals(gNode, group)) { // from this point the groups names are similar but are not the same object // we cannot replace a non-config'd group with a config'd group if (!gNode.FromConfig && bFromConfig) { group.InternalDispose(false); return; } // make sure the one we are replacing was not active. // if active, then the group that is replacing will be active if (gNode.IsActive) { SetActiveListenerGroup(group); } // set to default if the one being replaced was default if (gNode.IsDefault) { FDefaultGroup = group; } group.InternalDispose(false); } group.FromConfig = bFromConfig; FListenerGroups[group.Name] = group; } }