Esempio n. 1
0
        protected override void DoConfigure(IConfigSectionNode node)
        {
            if (node == null)
            {
                node = App.ConfigRoot[CONFIG_PROCESS_MANAGER_SECTION];
            }

            base.DoConfigure(node);

            var nptr = node[CONFIG_PROCESS_TYPE_RESOLVER_SECTION];

            m_ProcessTypeResolver = FactoryUtils.Make <IGuidTypeResolver>(nptr, typeof(GuidTypeResolver <Process, ProcessAttribute>), new[] { nptr });

            var nstr = node[CONFIG_SIGNAL_TYPE_RESOLVER_SECTION];

            m_SignalTypeResolver = FactoryUtils.Make <IGuidTypeResolver>(nstr, typeof(GuidTypeResolver <Signal, SignalAttribute>), new[] { nstr });

            var nttr = node[CONFIG_TODO_TYPE_RESOLVER_SECTION];

            m_TodoTypeResolver = FactoryUtils.Make <IGuidTypeResolver>(nttr, typeof(GuidTypeResolver <Todo, TodoQueueAttribute>), new[] { nttr });

            if (node == null || !node.Exists)
            {
                return;
            }

            foreach (var cn in node.Children.Where(cn => cn.IsSameName(Metabase.Metabank.CONFIG_HOST_SET_SECTION)))
            {
                var name = cn.AttrByName(Configuration.CONFIG_NAME_ATTR).Value;
                if (name.IsNullOrWhiteSpace())
                {
                    throw new CoordinationException(StringConsts.PM_HOSTSET_CONFIG_MISSING_NAME_ERROR);
                }

                var path = cn.AttrByName(CONFIG_PATH_ATTR).Value;

                if (path.IsNullOrWhiteSpace())
                {
                    throw new CoordinationException(StringConsts.PM_HOSTSET_CONFIG_PATH_MISSING_ERROR.Args(name));
                }

                var spar = cn.AttrByName(CONFIG_SEARCH_PARENT_ATTR).ValueAsBool(true);
                var tNoc = cn.AttrByName(CONFIG_TRANSCEND_NOC_ATTR).ValueAsBool(false);
                var hset = HostSet.FindAndBuild <HostSet>(name, path, spar, tNoc);

                var added = m_HostSets.Register(hset);
                if (!added)
                {
                    throw new CoordinationException(StringConsts.PM_HOSTSET_CONFIG_DUPLICATE_NAME_ERROR.Args(name));
                }
            }
        }