///用户自定义事件处理函数 int CwxMqRecvHandler::onUserEvent(CwxMsgBlock*& msg, CwxTss* pThrEnv) { CWX_ASSERT(m_pApp->getConfig().getCommon().m_type == CwxMqConfigCmn::MQ_TYPE_ZK); CwxMqTss* pTss = (CwxMqTss*)pThrEnv; if (EVENT_ZK_LOCK_CHANGE == msg->event().getEvent()) { ///master发生切换 CwxMqZkLock* pLock = NULL; memcpy(&pLock, msg->rd_ptr(), sizeof(&pLock)); if (pTss->m_pZkLock) { if (pTss->m_pZkLock->m_ullVersion > pLock->m_ullVersion) { ///采用旧版本 delete pLock; }else { ///采用新版本 delete pTss->m_pZkLock; pTss->m_pZkLock = pLock; } }else { ///采用新版本 pTss->m_pZkLock = pLock; } CWX_INFO(("CwxMqRecvHandler: lock changed.master[%s:%s:%d], prev[%s:%s:%d]", pTss->m_pZkLock->m_strMaster.c_str(), pTss->m_pZkLock->m_strMasterInnerDispHost.c_str(), pTss->m_pZkLock->m_unMasterInnerDispPort, pTss->m_pZkLock->m_strPrev.c_str(), pTss->m_pZkLock->m_strPrevInnerDispHost.c_str(), pTss->m_pZkLock->m_unPrevInnerDispPort)); configChange(pTss); }else { CWX_ERROR(("CwxMqRecvHandler: unknown event type:%u", msg->event().getEvent())); return 0; } return 1; }
//callback extern void __android_handle_cmd(struct android_app* app, int32_t cmd) { switch(cmd){ case APP_CMD_INIT_WINDOW: setIsAndroidValidDevice(true); if(initAndroid) initAndroid(app->userData); break; case APP_CMD_TERM_WINDOW: if(termAndroid) termAndroid(app->userData); break; case APP_CMD_PAUSE: setIsAndroidValidDevice(false); if(pauseAndroid) pauseAndroid(app->userData); break; case APP_CMD_WINDOW_RESIZED: if(windowResized){ int32_t width = ANativeWindow_getWidth(getAndroidApp()->window); int32_t height = ANativeWindow_getHeight(getAndroidApp()->window); windowResized(app->userData,(int)width,(int)height); } break; case APP_CMD_RESUME: if(resumeAndroid) resumeAndroid(app->userData); break; case APP_CMD_CONFIG_CHANGED: if(configChange) configChange(app->userData); break; case APP_CMD_SAVE_STATE: if(saveStateAndroid) saveStateAndroid(app->userData); break; case APP_CMD_GAINED_FOCUS: setEnableAccelerometer((1000L/60)*1000); if(getFocusAndroid) getFocusAndroid(app->userData); break; case APP_CMD_LOST_FOCUS: setDisableAccelerometer(); if(lostFocusAndroid) lostFocusAndroid(app->userData); break; default:break; } }