コード例 #1
0
		internal NodeGroupCollection(RelayNodeGroupDefinitionCollection groupDefinitions, RelayNodeConfig nodeConfig, ForwardingConfig forwardingConfig) : base()
		{
			foreach (RelayNodeGroupDefinition groupDefinition in groupDefinitions)
			{
				Add(new NodeGroup(groupDefinition, nodeConfig, forwardingConfig));
			}
		}
コード例 #2
0
        internal void ReloadMapping(RelayNodeConfig newConfig, ForwardingConfig forwardingConfig)
        {
            RelayNodeMapping relayNodeMapping = newConfig.RelayNodeMapping;
            RelayNodeGroupDefinitionCollection groupDefinitions = relayNodeMapping.RelayNodeGroups;

            foreach (RelayNodeGroupDefinition groupDefinition in groupDefinitions)
            {
                if (Contains(groupDefinition.Name))
                {
                    this[groupDefinition.Name].ReloadMapping(groupDefinition, newConfig, forwardingConfig);
                }
                else
                {
                    if (_log.IsInfoEnabled)
                    {
                        _log.InfoFormat("Adding new node group {0}", groupDefinition.Name);
                    }
                    Add(new NodeGroup(groupDefinition, newConfig, forwardingConfig));
                }
            }

            bool removedOne;

            //make sure if any groups have been removed they are removed!
            do
            {
                removedOne = false;
                foreach (NodeGroup group in this)
                {
                    if (!groupDefinitions.Contains(group.GroupName))
                    {
                        if (_log.IsInfoEnabled)
                        {
                            _log.InfoFormat("Removing node group {0}", group.GroupName);
                        }
                        Remove(group.GroupName);
                        removedOne = true;
                        break;                         //collection modified can't continue with foreach!
                    }
                }
            } while (removedOne);

            _groupsByTypeId = GenerateGroupsByTypeId(newConfig.TypeSettings);
        }