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