void CGameSocket::RecvUserUpdate(Packet & pkt) { CUser* pUser = g_pMain->GetUserPtr(pkt.read<uint16>()); if (pUser == nullptr) return; ReadUserInfo(pkt, pUser); }
/************************************************* Function: nlscan.JniSendCommond Descroption: Input: 1.env 2.thiz 3.Cmd Output: Return: Other: *************************************************/ static jboolean JniSendCommondV(JNIEnv* env, jobject thiz, jint Cmd) { #if CHECK_OPER if(mCheck == false) { return false; } #endif switch(Cmd) { case JNI_BEEP_OK: BeepOk(env, thiz); break; case JNI_BEEP_ERR: BeepErr(env, thiz); break; case JNI_READ_USER: ReadUserInfo(env, thiz); break; case JNI_READ_USERDEFAULT: ReadUserInfoDefault(env, thiz); break; case JNI_W_CRCBLK_ROM: WriteCrcBlkToRom(env, thiz); break; case JNI_RECOVERY_SYS: RecoverSys(env, thiz); break; case JNI_GET_VERSION: GetVersion(env, thiz); break; case JNI_POWER_ON: PowerOnInit(env, thiz); break; case JNI_GET_CARDID: GetCardId(env, thiz); break; case JNI_GET_CARDTYPE: GetCardType(env, thiz); break; default: break; } return true; }
FArchive &operator<< (FArchive &arc, userinfo_t &info) { if (SaveVersion < 4253) { ReadCompatibleUserInfo(arc, info); } else if (arc.IsStoring()) { WriteUserInfo(arc, info); } else { ReadUserInfo(arc, info); } return arc; }
// UpdateModel 此处不是增量更新 int ModelUpdater::UpdateModel(long WORKER, long WORKERNUM, long STEP) { char fname[128]; sprintf(fname, "/data/xce/friendranknew/data/user_models.dat_%ld", WORKER); FILE* fp = fopen(fname, "wb"); if (fp==NULL) { MCE_ERROR("ModelUpdater::UpdateModel(): "<<strerror(errno)<<": " << fname); return -1; } long totalUser = 0; long increUser = 0; int stepno = 0; map<USERID,UserModel> models; int usetime[8]; memset(usetime, 0, 8*sizeof(int)); time_t time_start = 0, time_end = 0; while (true) { //GetStepInterval(WORKER, WORKERNUM, STEP, stepno++, models); GetStepOverall(WORKER, WORKERNUM, STEP, stepno++, models); if ((increUser=models.size())>0) { time_start = time(NULL); ReadUserInfo(models, usetime); SaveModels(models, fp); models.clear(); time_end = time(NULL); totalUser += increUser; MCE_INFO("0:"<<usetime[0]<<" 1:"<<usetime[1]<<" 2:"<<usetime[2]<<" 3:"<<usetime[3]<<" 4:"<<usetime[4]<<" 5:"<<usetime[5]<<" 6:"<<usetime[6]<<" 7:"<<usetime[7]<<" | ["<<WORKER<<"] "<<time_end-time_start<<" | "<<increUser<<" / "<<totalUser); } if (increUser<STEP) { MCE_INFO("Worker["<<WORKER<<"] read "<<totalUser<<" users totally. byebye."); break; } } fclose(fp); return 0; }//
void CGameSocket::RecvUserInfo(Packet & pkt) { CUser *pUser = new CUser(); pUser->Initialize(); pkt >> pUser->m_iUserId; ReadUserInfo(pkt, pUser); if (pUser->GetName().empty() || pUser->GetName().length() > MAX_ID_SIZE) { delete pUser; return; } pUser->m_pMap = g_pMain->GetZoneByID(pUser->m_bZone); pUser->m_bLive = AI_USER_LIVE; TRACE("**** RecvUserInfo()---> uid = %d, name=%s ******\n", pUser->GetID(), pUser->GetName().c_str()); if (!g_pMain->SetUserPtr(pUser->GetID(), pUser)) delete pUser; }