/// <summary>
/// 时间处理
/// <summary>
void CDanceGroupFairlyLandProcessor::NewDayProcess(time_t tNow)
{ // 先清理内存,然后清理数据库
    if ( !IsSameDay(m_nPrvCheckTime, tNow) )
    {
        NewDayClear();
    }
}
Exemplo n.º 2
0
void ActivenessComponent::ResetActivinessData(time_t nNow)
{
    if (IsSameDay(m_nUpdateTime, nNow))
        return; //

    m_nUpdateTime = (unsigned int)nNow;
    m_nActivenessScore = 0;
    m_setRewardLevelScore.clear();
    m_mapTargetProgress.clear();
    m_setFinishedDanceMode.clear();

    return;
}
Exemplo n.º 3
0
void CLogerManager::Run()
{
	m_bRuning = true;
	m_loggers[LOG4Z_MAIN_LOGGER_ID]._enable = true;
	PushLog(0, LOG_LEVEL_ALARM, "-----------------  log4z thread started!   ----------------------------");
	for (int i=0; i<LOG4Z_LOGGER_MAX; i++)
	{
		if (m_loggers[i]._enable)
		{
			std::stringstream ss;
			ss <<"logger id=" <<i 
				<<" path=" <<m_loggers[i]._path
				<<" name=" <<m_loggers[i]._name
				<<" level=" << m_loggers[i]._level
				<<" display=" << m_loggers[i]._display;
			PushLog(0, LOG_LEVEL_ALARM, ss.str().c_str());
		}
	}

	m_semaphore.Post();


	LogData * pLog = NULL;
	char *pWriteBuf = new char[LOG4Z_LOG_BUF_SIZE + 512];
	int needFlush[LOG4Z_LOGGER_MAX] = {0};
	while (true)
	{
		while(PopLog(pLog))
		{
			//
			m_ullStatusTotalPopLog ++;
			//discard
			LoggerInfo & curLogger = m_loggers[pLog->_id];
			if (!curLogger._enable || pLog->_level <curLogger._level  )
			{
				delete pLog;
				pLog = NULL;
				continue;
			}

			//update file
			if (LOG4Z_ALL_WRITE_TO_FILE)
			{
				bool sameday = IsSameDay(pLog->_time, curLogger._curFileCreateTime);
				bool needChageFile = curLogger._curWriteLen > curLogger._limitsize*1024*1024;
				if (!curLogger._handle.IsOpen() 
					|| !sameday
					|| needChageFile)
				{
					if (!sameday)
					{
						curLogger._curFileIndex = 0;
						curLogger._curWriteLen = 0;
					}
					else if ( needChageFile)
					{
						curLogger._curFileIndex ++;
						curLogger._curWriteLen = 0;
					}
					curLogger._curFileCreateTime = pLog->_time;
					if (!OpenLogger(pLog->_id))
					{
						curLogger._enable = false;
						delete pLog;
						pLog = NULL;
						ShowColorText("log4z: Run can not update file, open file false! \r\n", LOG_LEVEL_FATAL);
						continue;
					}
				}
			}

			//record
			tm tt;
			if (!TimeToTm(pLog->_time, &tt))
			{
				memset(&tt, 0, sizeof(tt));
			}
			sprintf(pWriteBuf, "%d-%02d-%02d %02d:%02d:%02d.%03d %s %s \r\n", 
				tt.tm_year+1900, tt.tm_mon+1, tt.tm_mday, tt.tm_hour, tt.tm_min, tt.tm_sec, pLog->_precise,
				LOG_STRING[pLog->_level], pLog->_content);

			if (LOG4Z_ALL_WRITE_TO_FILE)
			{
				size_t writeLen = strlen(pWriteBuf);
				curLogger._handle.Write(pWriteBuf, writeLen);
				curLogger._curWriteLen += (unsigned int)writeLen;
				needFlush[pLog->_id] ++;
				m_ullStatusTotalWriteFileCount++;
				m_ullStatusTotalWriteFileBytes += writeLen;
			}
			else
			{
				size_t writeLen = strlen(pWriteBuf);
				m_ullStatusTotalWriteFileCount++;
				m_ullStatusTotalWriteFileBytes += writeLen;
			}

			if (curLogger._display && !LOG4Z_ALL_SYNCHRONOUS_DISPLAY)
			{
				ShowColorText(pWriteBuf, pLog->_level);
			}



			delete pLog;
			pLog = NULL;
		}

		for (int i=0; i<LOG4Z_LOGGER_MAX; i++)
		{
			if (m_loggers[i]._enable && needFlush[i] > 0)
			{
				m_loggers[i]._handle.Flush();
				needFlush[i] = 0;
			}
		}

		//! delay. 
		SleepMillisecond(100);

		//! quit
		if (!m_bRuning && m_logs.empty())
		{
			break;
		}

	}

	for (int i=0; i<LOG4Z_LOGGER_MAX; i++)
	{
		if (m_loggers[i]._enable)
		{
			m_loggers[i]._enable = false;
			m_loggers[i]._handle.Close();
		}
	}
	delete []pWriteBuf;
	pWriteBuf = NULL;

}
Exemplo n.º 4
0
void UserLogin::handle_WG_UserLogin(Event* e)
{
	const NewStar_Rsp& rsp = e->newstarrsp();
	const UserLogin_Req& req = e->userlogin_req();
	int64 uid = req.uid();
	if(uid<=0)
		return;
	int nPhysicsRegion = getPhysicsRegion(uid);
	//判断所属物理分区是否正确
	if(nPhysicsRegion != serverConfig.GetPhysiceRegionByGame(eh_->GetSrvID()))
		return;
	GameDataHandler* dh = eh_->getDataHandler();

	const string& platid = req.platform_id();
	int siteid = req.siteid();
	const string& name = req.name();
	const string& profile_link = req.profile_link();
	int gender = (req.gender() == 0) ? Gender_Girl : Gender_Boy ;
	vector<string> friends_platid;
	for (int i = 0; i < req.friends_platid_size(); i ++)
	{
		friends_platid.push_back(req.friends_platid(i));
	}
	bool isYellowDmd = req.is_yellow_dmd();
	bool isYellowDmdYear = req.is_yellow_dmd_year();
	int lvlYellowDmd = req.yellow_dmd_lv();
	bool isHighYellowDmd = req.is_high_yellow_dmd();
	bool isHighDmdYear = req.is_high_dmd_year();
	int nBlueTime = req.bluetime();
	int nBlueYearTime = req.blueyeartime();
	int nHighBlueTime = req.highbluetime();
	int nHighYearTime = req.highblueyeartime();

	int webfd = req.webfd();
	string sid = req.sid();
	int region = req.region();
	int nCity  = req.city();
	string strVIA = req.via();	//玩家渠道
	bool isRecall = req.isrecall();
	int nCustomFlag = req.customflag();
	int nBackFlowFlag = req.nbackflowflag();
	const WebCrossPromotion* pWebPromotion = e->mutable_userlogin_req()->mutable_promotion();
	string strChanel = pWebPromotion->chanle();
	LOG4CXX_INFO(logger_, "World request UserLogin with openid: " << platid);
	//if(dh->GetUserID(platid,region)!=uid)
	//{
	//	dh->AddUserID(platid,region,uid);
	//}
	LoadStatus state = LOAD_INVALID;
	User* user = processUserLogin(uid,platid, siteid, name, profile_link, gender,
		friends_platid, isYellowDmd, isYellowDmdYear, lvlYellowDmd, state,
		region,nCity,req.isnewplayer(),strVIA,isHighYellowDmd,strChanel,isHighDmdYear,nBlueTime,nBlueYearTime,nHighBlueTime,nHighYearTime,
		rsp.id(), rsp.name(), rsp.type(), rsp.sku());
	if (user != NULL)
	{
		UserLogin_Rsp* rsp = e->mutable_userlogin_rsp();
		rsp->set_server(eh_->getServerIp());
		rsp->set_port(eh_->getServerPort());
		rsp->set_port1(eh_->getServerPort1());
		rsp->set_uid(user->GetUid());
		rsp->set_secret(user->secret(eh_->getReversion()));
		rsp->set_webfd(webfd);
		rsp->set_sid(sid);
		rsp->set_region(region);
		rsp->set_mainload("0");//此项已失效
		rsp->set_version(FlashVersionCfg::Instance().GetCfgVersion(eh_->GetSrvID()));
		rsp->set_gettime(req.gettime());
		rsp->set_platform_id(req.platform_id());
		rsp->set_playerlvl(user->GetUserLevel());
		rsp->set_logintimes(IsSameDay(user->GetLastLoginTime(),time(NULL))?1:0);
		rsp->set_isnewplayer(req.isnewplayer());
		rsp->set_customflag(req.customflag());
		rsp->set_channel(strChanel);
#if 0
		user->SetUndealGiftCount(req.undealgiftcnt());
		user->SetUndealFrdGiftCount(req.undealfrdgiftcnt());
		user->SetInviteFrdCnt(req.invitefrdcnt());
		user->SetDayInviteFrdCnt(req.invitefrdcntday());
		user->SetDayWebGiftSendCnt(req.daysendgiftcnt());
		user->SetChannel(strChanel);
		user->GetDbUser().set_badult((req.nadultflag() >= 100)?true : false);

		bool bIsNewInvite = false;
		if (user->SetPlatInviteFriendOpenid(req.invitefriendid()))
		{
			bIsNewInvite = true;
		}
		user->GetDbUser().mutable_player()->set_yellowdmdtime(req.yellowdmdtime());

		if (req.isnewplayer() && bIsNewInvite)
		{
			HttpRequireHandler::Instance().SafePushHttpAcceptToQQ(user, user->GetPlattype());
		}
		else if (req.isnewplayer())
		{
			HttpRequireHandler::Instance().SafePushHttpSelfRegistToQQ(user, user->GetPlattype());
		}
		HttpRequireHandler::Instance().SafePushHttpLogOnToQQ(user, user->GetPlattype());

		user->GetDbUser().set_isactivelogon( req.isapp51act() );

		RceInviteFriend* pinviteMsg = e->mutable_ce_rceinvitefriend();
		user->GetPlayer()->SetInviteFrdCntGain(pinviteMsg->friendcount(),pinviteMsg->giftgain());

		//交叉推广
		//if(strChanel.size()>0)
		//{
		//	user->m_mapChanlelFirst[strChanel] += 1;
		//}
		user->SetCrossPromotion(pWebPromotion);

		for ( int i = 0; i < req.invitegiftrecord_size(); i++ )
		{
			DB_InvitedFriendLvGift* pDBInvitedFriendLvGift = user->GetPlayer()->GetDBInvitedFriendLvGift(req.invitegiftrecord(i));
			if ( pDBInvitedFriendLvGift == NULL )
			{
				continue;
			}

			pDBInvitedFriendLvGift->set_hasget( true );
		}
#endif

		e->clear_userlogin_req();
		e->set_state(UserLogin_GW_Rsp);
		eh_->sendEventToWorld(e);


		user->InitRc4Key(rsp->logintimes(),sid);

#if 0
		if(user->GetUserLevel() != req.level())
		{
			eh_->SendUserInfo2Plat(user,UpdatePlat_Level);
		}
		//if(user->GetPlayer()->GetDBPlayer()->invite_platid_size()>0)
		//{//分服前后数据同步
		//	eh_->SendUserInfo2Plat(user,1);
		//	user->GetPlayer()->GetDBPlayer()->clear_invite_platid();
		//}

		//召回老友统计
		if ( isRecall )
		{
			SYS_UserStat(user,false,"CallBackFrdBack",1,"","","");
		}

		if ( nCustomFlag > 0 )
		{
			//2015.03.10空间广告位回流
			const CostGiftTbl *pCostTbl = CostGiftCfg::Instance().GetCostGiftTbl(10098);
			DB_QQBackFlow* pDBQQBackFlow = user->GetPlayer()->GetDBPlayer()->mutable_qqrightbackflowflag();
			if (pCostTbl != NULL &&
				pCostTbl->IsCurrentTime() &&
				pDBQQBackFlow != NULL &&
				pDBQQBackFlow->actflag() != pCostTbl->m_tBeginTime)
			{
				//user->GetPlayer()->GetDBPlayer()->set_customflagtime( time(NULL) );
				SYS_LOG(user->GetPlayer()->GetUserID(),LT_COST_GIFT_CUSTOM_FLAG,0,0,0);
				pDBQQBackFlow->Clear();
				pDBQQBackFlow->set_actflag(pCostTbl->m_tBeginTime);
				pDBQQBackFlow->set_curstate(1);
			}
		}

		if (nBackFlowFlag == 1)
		{//空间顶部应用墙回流
			if ( user->GetPlayer()->GetDBPlayer()->qqtopbackflowflag() == 0)
			{
				user->GetPlayer()->GetDBPlayer()->set_qqtopbackflowflag(1);
			}
		}
		else if (nBackFlowFlag == 2)
		{//空间顶部应用墙回流
			if ( user->GetPlayer()->GetDBPlayer()->qqleftbackflowflag() == 0)
			{
				user->GetPlayer()->GetDBPlayer()->set_qqleftbackflowflag(1);
			}
		}
		else if (nBackFlowFlag == 4)
		{
			if(user->GetPlayer()->GetDBPlayer()->qqtenyearbackflowflag() == 0)
			{
				user->GetPlayer()->GetDBPlayer()->set_qqtenyearbackflowflag(1);
			}
		}

		if ( bIsNewInvite )
		{
			ConstantSetUnit* pUnit = GameConstantSetCfg::Instance().GetGameConstantSet(E_GAMECONSTANTSET_DEF_HOLIDAY_INVITE);
			if ( pUnit != NULL )
			{
				time_t now = time(NULL);
				time_t tBeginTime = GetDayTimeByStr( pUnit->m_strArgs[0].c_str(), pUnit->m_strArgs[1].c_str() );
				time_t tEndTime   = GetDayTimeByStr( pUnit->m_strArgs[2].c_str(), pUnit->m_strArgs[3].c_str() );

				if( now >= tBeginTime && now <= tEndTime )
				{
					user->GetPlayer()->GetDBPlayer()->set_canholidayinvitegiftsend(true);
				}
			}
		}

		user->GetPlayer()->GetDBPlayer()->set_qqtaskstep( req.qqtaskstep() );
#endif
		dh->markUserDirty(user);
	}
	else
	{
		if (state == LOAD_WAITING)
		{
			eh_->postBackEvent(e);
		}
	}
}
bool CDanceGroupFairlyLandProcessor::NeedDoLastDayClear(time_t nLastTime, time_t now)
{ // 不是同一天的数据,则需要清理
    return !IsSameDay(nLastTime, now);
}
Exemplo n.º 6
0
bool CEntityCheckInComponent::IsTodayCheckIn()
{
    return IsSameDay(m_CheckInInfo.m_nCheckInTime, time(NULL));
}
Exemplo n.º 7
0
	virtual void Run()
	{
		m_bRuning = true;
		PushLog(GetMainLogger(), LOG_LEVEL_ALARM, "-----------------  log4z thread started!   ----------------------------");
		for (int i=0; i<LOGGER_MAX; i++)
		{
			if (m_loggers[i]._enable)
			{
				std::stringstream ss;
				ss <<" logger id=" <<i 
				   <<" path=" <<m_loggers[i]._path
				   <<" name=" <<m_loggers[i]._name
				   <<" level=" << m_loggers[i]._level
				   <<" display=" << m_loggers[i]._display;
				PushLog(GetMainLogger(), LOG_LEVEL_ALARM, ss.str().c_str());
			}
		}
		
		m_semaphore.Post();


		LogData * pLog = NULL;
#ifdef WIN32
		char text[LOG_BUF_SIZE+MAX_PATH+512] = {0};
#else
		char text[LOG_BUF_SIZE+PATH_MAX+512] = {0};
#endif
		int needFlush[LOGGER_MAX] = {0};
		int maxCount = 0;
		while (true)
		{
			while(PopLog(pLog))
			{
				//discard
				if (!m_loggers[pLog->_id]._enable || pLog->_level <m_loggers[pLog->_id]._level  )
				{
					delete pLog;
					pLog = NULL;
					continue;
				}

				//update file
				if (!m_loggers[pLog->_id]._handle.is_open() 
					|| !m_loggers[pLog->_id]._handle.good()
					|| !IsSameDay(pLog->_time, m_loggers[pLog->_id]._filetime))
				{
					m_loggers[pLog->_id]._filetime = pLog->_time;
					if (!OpenLogger(pLog->_id))
					{
						m_loggers[pLog->_id]._enable = false;
						delete pLog;
						pLog = NULL;
						continue;
					}
				}

				//record
				tm tt;
				if (!TimeToTm(pLog->_time, &tt))
				{
					memset(&tt, 0, sizeof(tt));
				}
				sprintf(text, "%d-%02d-%02d %02d:%02d:%02d %s %s \r\n", 
					tt.tm_year+1900, tt.tm_mon+1, tt.tm_mday, tt.tm_hour, tt.tm_min, tt.tm_sec,
					LOG_STRING[pLog->_level], pLog->_content);

				m_loggers[pLog->_id]._handle.write(text, (std::streamsize)strlen(text));
				if (m_loggers[pLog->_id]._display)
				{
					ShowColorText(text, pLog->_level);
				}

				needFlush[pLog->_id] ++;
				maxCount++;
				m_ullStatusTotalWriteCount++;
				m_ullStatusTotalWriteBytes+=strlen(text);
				delete pLog;
				pLog = NULL;

				if (maxCount > 1000)
				{
					//flush
					maxCount = 0;
					for (int i=0; i<LOGGER_MAX; i++)
					{
						if (m_loggers[i]._enable && needFlush[i] > 0)
						{
							m_loggers[i]._handle.flush();
							needFlush[i] = 0;
						}
					}
				}
			}

			//flush
			if (maxCount > 0)
			{
				//flush
				maxCount = 0;
				for (int i=0; i<LOGGER_MAX; i++)
				{
					if (m_loggers[i]._enable && needFlush[i] > 0)
					{
						m_loggers[i]._handle.flush();
						needFlush[i] = 0;
					}
				}
			}


			//stopped
			if (!m_bRuning)
			{
				break;
			}
			//delay. 
			SleepMillisecond(100);
		}

		for (int i=0; i<LOGGER_MAX; i++)
		{
			if (m_loggers[i]._enable)
			{
				m_loggers[i]._handle.close();
			}
		}
	}