Beispiel #1
0
        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);
            }
        }
Beispiel #2
0
        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;
            }
        }