当前位置:手游汇攻略 → 开源服务器框架NoahFrame分享 第二章:插件与模块

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

时间:2017-10-31 11:55:22    

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

相关游戏

玩家评论

加载更多

网名(您的评论需要经过审核才能显示) 回复 [ ] 楼取消回复