您的位置:首页 > 理论基础 > 计算机网络

网络信息传递之 回调信息注册和响应

2014-09-20 18:35 120 查看
<1>回调宏定义
typedef void (cocos2d::CCObject::*MethodDataJson)(CMessage *message);
#define callFuncSelectorJson(_SELECTOR) (MethodDataJson)(&_SELECTOR)

<2>回调函数宏定义
#define DM_CALL_FUNC_LISTERNER(funName)\
virtual void funName(CMessage *message)

<3>回调函数声明
DM_CALL_FUNC_LISTERNER(cfLogin);

<4>注册
CManage::instance()->addListener("1002", this, callFuncSelectorJson(LoginLayer::cfLogin));

<5>回调实现
void LoginLayer::cfLogin(CMessage *message)
{
CCLOG("====开始解析用户字段");
#if(API_ID == API_360)
//----------------------------360解析各种字段------------------------
//获取到各个对象
const rapidjson::Value& msg = message->getJsonMsg();
const rapidjson::Value& res = DICTOOL->getSubDictionary_json(msg, "res");
const rapidjson::Value& token = DICTOOL->getSubDictionary_json(res, "token");

//获取到各个对象键值对应的值
My91Login::sharedMy91Login()->_userInfo.accessToken = DICTOOL->getStringValue_json(token, "access_token");
My91Login::sharedMy91Login()->_userInfo.passport = DICTOOL->getStringValue_json(msg, "passport");
My91Login::sharedMy91Login()->_userInfo.nickname = DICTOOL->getStringValue_json(msg, "nickname");
My91Login::sharedMy91Login()->_userInfo.userId = DICTOOL->getIntValue_json(msg, "userId");
CCLOG("=====解析用户数据");
#elif(API_ID == API_UC)
const rapidjson::Value& msg = message->getJsonMsg();
MyUC::sharedMyUC()->roleId = DICTOOL->getIntValue_json(msg, "userId");
MyUC::sharedMyUC()->roleName = DICTOOL->getStringValue_json(msg, "nickname");
CCLOG("*****%d, %s******",MyUC::sharedMyUC()->roleId, MyUC::sharedMyUC()->roleName.c_str());
#endif
//发送消息(获取任务信息,通知登录)
WriteJson wj;
wj.setRequestId(2001);
CManage::instance()->sendMessage(wj.getString());
CCLOG("=====通知登录");
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐