开源服务器框架NoahFrame分享 第二章:插件与模块

2017-10-31

return false;

}

for (rapidxml::xml_node<>* pPluginNode = pAppNameNode->first_node("Plugin"); pPluginNode; pPluginNode = pPluginNode->next_sibling("Plugin"))

{

const char* strPluginName = pPluginNode->first_attribute("Name")->value();

mPluginNameMap.insert(PluginNameMap::value_type(strPluginName, true));

}

rapidxml::xml_node<>* pPluginConfigPathNode = pAppNameNode->first_node("ConfigPath");

if (!pPluginConfigPathNode)

{

NFASSERT(0, "There are no ConfigPath", __FILE__, __FUNCTION__);

return false;

}

if (NULL == pPluginConfigPathNode->first_attribute("Name"))

{

NFASSERT(0, "There are no ConfigPath.Name", __FILE__, __FUNCTION__);

return false;

}

mstrConfigPath = pPluginConfigPathNode->first_attribute("Name")->value();

return true;

}

其次会开始执行Init AfterInit等函数,每个函数都会调用内部NFIPlugin的同名接口,而在NFIPlugin内部又会调用所有的Module同名接口。比如Init函数做实例:

调用NFCPluginManager::Init内部会迭代所有的NFIPlugin,来调用NFIPlugin同名Init函数:

virtual bool NFCPluginManager::Init()

{

PluginInstanceMap::iterator itInstance = mPluginInstanceMap.begin();

123456阅读全文

相关游戏

最新合集

相关文章

网友评论

    加载更多
    回复 [1楼 ]取消回复