Пример #1
0
void CDBManager::OnMessage(stMsg* pmsg , eMsgPort eSenderPort , uint32_t nSessionID )
{
    // construct sql
    stArgData* pdata = GetReserverArgData() ;
    if ( pdata == NULL )
    {
        pdata = new stArgData ;
    }

    pdata->eFromPort = eSenderPort ;
    pdata->nSessionID = nSessionID ;

    stDBRequest* pRequest = CDBRequestQueue::SharedDBRequestQueue()->GetReserveRequest();
    pRequest->cOrder = eReq_Order_Normal ;
    pRequest->nRequestUID = pmsg->usMsgType ;
    pRequest->pUserData = pdata;
    pRequest->eType = eRequestType_Max ;
    pRequest->nSqlBufferLen = 0 ;

    switch( pmsg->usMsgType )
    {
    case MSG_SAVE_LOG:
    {
        stMsgSaveLog* pCreate = (stMsgSaveLog*)pmsg ;
        pdata->nExtenArg1 = pCreate->nTargetID ;
        char* pStrBuffer = new char[pCreate->nJsonExtnerLen+1];
        memset(pStrBuffer,0,pCreate->nJsonExtnerLen+1);
        char* pS = (char*)&pCreate->nJsonExtnerLen ;
        pS += sizeof(pCreate->nJsonExtnerLen);
        memcpy(pStrBuffer,pS,pCreate->nJsonExtnerLen);
        pRequest->eType = eRequestType_Select ;
        pRequest->nSqlBufferLen = sprintf_s(pRequest->pSqlBuffer,
                                            "call saveLog(%d,'%d','%s'",pCreate->nLogType,pCreate->nTargetID,pStrBuffer) ;
        for ( uint8_t nIdx = 0 ; nIdx < LOG_ARG_CNT; ++nIdx )
        {
            pRequest->nSqlBufferLen += sprintf((char*)(pRequest->pSqlBuffer + pRequest->nSqlBufferLen),
                                               ",'%I64d'",pCreate->vArg[nIdx]) ;
        }

        pRequest->nSqlBufferLen += sprintf((char*)(pRequest->pSqlBuffer + pRequest->nSqlBufferLen),
                                           ")") ;
        delete[] pStrBuffer ;
        pStrBuffer = nullptr;
    }
    break;
    case MSG_SAVE_PLAYER_ADVICE:
    {
        stMsgSavePlayerAdvice* pSave = (stMsgSavePlayerAdvice*)pmsg ;
        time_t nT = time(nullptr) ;
        char* pBuff = new char[pSave->nLen+1] ;
        memset(pBuff,0,pSave->nLen+1) ;
        memcpy(pBuff,(char*)pmsg + sizeof(stMsgSavePlayerAdvice) ,pSave->nLen );
        pRequest->eType = eRequestType_Add ;
        pRequest->nSqlBufferLen = sprintf_s(pRequest->pSqlBuffer,"INSERT INTO log_playeradvice (userUID, cotent,time,c_time) VALUES ('%u', '%s','%u','%s')",
                                            pSave->nUserUID,pBuff,(uint32_t)nT,ctime(&nT)) ;
        delete[] pBuff ;
        pBuff = nullptr ;
    }
    break;
    default:
    {
        m_vReserverArgData.push_back(pdata) ;
        CLogMgr::SharedLogMgr()->ErrorLog("unknown msg type = %d",pmsg->usMsgType ) ;
    }
    }

    if ( pRequest->nSqlBufferLen == 0 || pRequest->eType == eRequestType_Max )
    {
        CLogMgr::SharedLogMgr()->ErrorLog("a request sql len = 0 , msg = %d" , pRequest->nRequestUID ) ;

        CDBRequestQueue::VEC_DBREQUEST v ;
        v.push_back(pRequest) ;
        CDBRequestQueue::SharedDBRequestQueue()->PushReserveRequest(v);
    }
    else
    {
        CDBRequestQueue::SharedDBRequestQueue()->PushRequest(pRequest) ;
    }
}
Пример #2
0
void CDBManager::OnMessage(stMsg* pmsg , eMsgPort eSenderPort , uint32_t nSessionID )
{
	// construct sql
	stArgData* pdata = GetReserverArgData() ;
	if ( pdata == NULL )
	{
		pdata = new stArgData ;
	}

	pdata->eFromPort = eSenderPort ;
	pdata->nSessionID = nSessionID ;

	stDBRequest* pRequest = CDBRequestQueue::SharedDBRequestQueue()->GetReserveRequest();
	pRequest->cOrder = eReq_Order_Normal ;
	pRequest->nRequestUID = pmsg->usMsgType ;
	pRequest->pUserData = pdata;
	pRequest->eType = eRequestType_Max ;
	pRequest->nSqlBufferLen = 0 ;

	switch( pmsg->usMsgType )
	{
	case MSG_REQUEST_CREATE_PLAYER_DATA:
		{
			stMsgRequestDBCreatePlayerData* pCreate = (stMsgRequestDBCreatePlayerData*)pmsg ;
			pdata->nExtenArg1 = pCreate->nUserUID ;

			uint16_t nRandID = rand() % 10000 ;
			pRequest->eType = eRequestType_Select ;
			pRequest->nSqlBufferLen = sprintf_s(pRequest->pSqlBuffer,
				"call CreateNewRegisterPlayerData(%d,'guest%d')",pCreate->nUserUID,nRandID) ;
		}
		break;
	case MSG_PLAYER_BASE_DATA:
		{
			stMsgDataServerGetBaseData* pRet = (stMsgDataServerGetBaseData*)pmsg ;
			pdata->nExtenArg1 = pRet->nUserUID ;
			pRequest->eType = eRequestType_Select ;
			pRequest->nSqlBufferLen = sprintf_s(pRequest->pSqlBuffer,sizeof(pRequest->pSqlBuffer),
				"SELECT * FROM playerbasedata WHERE userUID = '%d'",pRet->nUserUID) ;
		}
		break;
	case MSG_PLAYER_SAVE_PLAYER_INFO:
		{
			stMsgSavePlayerInfo* pRet = (stMsgSavePlayerInfo*)pmsg ;
			pRequest->eType = eRequestType_Update ;
			std::string strUploadPic = stMysqlField::UnIntArraryToString(pRet->vUploadedPic,MAX_UPLOAD_PIC) ;
			pRequest->nSqlBufferLen = sprintf_s(pRequest->pSqlBuffer,sizeof(pRequest->pSqlBuffer),
				"UPDATE playerbasedata SET playerName = '%s', signature = '%s',vUploadedPic = '%s',photoID = '%d' WHERE userUID = '%d'",pRet->vName,pRet->vSigure,strUploadPic.c_str(),pRet->nPhotoID,pRet->nUserUID) ;
		}
		break;
	case MSG_SAVE_PLAYER_MONEY:
		{
			stMsgSavePlayerMoney* pRet = (stMsgSavePlayerMoney*)pmsg ;
			pRequest->eType = eRequestType_Update ;
			pRequest->nSqlBufferLen = sprintf_s(pRequest->pSqlBuffer,sizeof(pRequest->pSqlBuffer),
				"UPDATE playerbasedata SET coin = '%I64d', diamond = '%d' WHERE userUID = '%d'",pRet->nCoin,pRet->nDiamoned,pRet->nUserUID) ;
		}
		break;
	case MSG_SAVE_PLAYER_TAXAS_DATA:
		{
			stMsgSavePlayerTaxaPokerData* pRet = (stMsgSavePlayerTaxaPokerData*)pmsg ;
			pRequest->eType = eRequestType_Update ;
			std::string strMaxcard = stMysqlField::UnIntArraryToString(pRet->vMaxCards,MAX_TAXAS_HOLD_CARD) ;
			pRequest->nSqlBufferLen = sprintf_s(pRequest->pSqlBuffer,sizeof(pRequest->pSqlBuffer),
				"UPDATE playerbasedata SET winTimes = '%d', loseTimes = '%d', singleWinMost = '%I64d', maxCard = '%s' WHERE userUID = '%d'",pRet->nWinTimes,pRet->nLoseTimes,pRet->nSingleWinMost,strMaxcard.c_str(),pRet->nUserUID) ;
		}
		break;
	case MSG_SAVE_COMMON_LOGIC_DATA:
		{
			stMsgSavePlayerCommonLoginData* pRet = (stMsgSavePlayerCommonLoginData*)pmsg ;
			pRequest->eType = eRequestType_Update ;
			std::string strJoinedClub = stMysqlField::UnIntArraryToString(pRet->vJoinedClubID,MAX_JOINED_CLUB_CNT) ;
			pRequest->nSqlBufferLen = sprintf_s(pRequest->pSqlBuffer,sizeof(pRequest->pSqlBuffer),
				"UPDATE playerbasedata SET mostCoinEver = '%I64d', vipLevel = '%d', nYesterdayCoinOffset = '%I64d', \
				nTodayCoinOffset = '%I64d',offlineTime = '%d',continueLoginDays = '%d',lastLoginTime = '%d',lastTakeCharityCoinTime = '%d', \
				longitude = '%f',latitude = '%f,vJoinedClubID = '%s' WHERE userUID = '%d' ",
				pRet->nMostCoinEver,pRet->nVipLevel,pRet->nYesterdayCoinOffset,pRet->nTodayCoinOffset,pRet->tOfflineTime,pRet->nContinueDays,pRet->tLastLoginTime,pRet->tLastTakeCharityCoinTime,pRet->dfLongitude,pRet->dfLatidue,
				strJoinedClub.c_str(),pRet->nUserUID) ;
		}
		break;
// 	case MSG_PLAYER_SAVE_BASE_DATA:
// 		{
// 			stMsgGameServerSaveBaseData* pSaveBaseData = (stMsgGameServerSaveBaseData*)pmsg ;
// 			pdata->nSessionID = pSaveBaseData->nSessionID ;
// 			pdata->nExtenArg1 = pSaveBaseData->stBaseData.nUserUID ;
// 
// 			char pMaxCards[sizeof(pSaveBaseData->stBaseData.vMaxCards)*2 + 1 ] = {0} ;
// 			m_pTheApp->GetDBThread()->EscapeString(pMaxCards,(char*)pSaveBaseData->stBaseData.vMaxCards,sizeof(pSaveBaseData->stBaseData.vMaxCards)) ;
// 
// 			stDBRequest* pRequest = CDBRequestQueue::SharedDBRequestQueue()->GetReserveRequest();
// 			pRequest->cOrder = eReq_Order_Low ;
// 			pRequest->eType = eRequestType_Update ;
// 			pRequest->nRequestUID = pmsg->usMsgType ;
// 			pRequest->pUserData = pdata;
// 			pRequest->nSqlBufferLen = sprintf_s(pRequest->pSqlBuffer, 
// 			"UPDATE playerbasedata SET playerName = '%s', defaultPhotoID = '%u', isUploadPhoto = '%u', signature = '%s', sex = '%u', vipLevel = '%u',   \
// 			coin = '%I64u', diamond = '%u', winTimes = '%u', loseTimes = '%u', singleWinMost = '%I64u', maxCard = '%s',   \
// 			longitude = '%f', latitude = '%f', exp = '%u', offlineTime = '%u',noticeID = '%u',vipEndTime = '%u',\
// 			continueLoginDays = '%u',lastLoginTime = '%u',lastTakeCharityCoinTime = '%u',todayPlayTimes = '%u' , \
// 			yesterdayPlayTimes = '%u',todayWinCoin = '%I64d',yesterdayWinCoin = '%I64d', \
// 			takeMasterStudentRewardTime = '%u',rechargeTimes = '%u',curOnlineBoxID = '%u',onlineBoxPassedTime = '%u' WHERE userUID = '%u'", 
// 			pSaveBaseData->stBaseData.cName,pSaveBaseData->stBaseData.nDefaulPhotoID,pSaveBaseData->stBaseData.bIsUploadPhoto,pSaveBaseData->stBaseData.cSignature,pSaveBaseData->stBaseData.nSex,pSaveBaseData->stBaseData.nVipLevel,
// 			pSaveBaseData->stBaseData.nCoin,pSaveBaseData->stBaseData.nDiamoned,pSaveBaseData->stBaseData.nWinTimes,pSaveBaseData->stBaseData.nLoseTimes,pSaveBaseData->stBaseData.nSingleWinMost,pMaxCards,
// 			pSaveBaseData->stBaseData.dfLongitude,pSaveBaseData->stBaseData.dfLatidue,pSaveBaseData->stBaseData.nExp,(unsigned int)pSaveBaseData->stBaseData.tOfflineTime,pSaveBaseData->stBaseData.nNoticeID,pSaveBaseData->stBaseData.nVipEndTime,
// 			pSaveBaseData->stBaseData.nContinueDays,(unsigned int)pSaveBaseData->stBaseData.tLastLoginTime,(unsigned int)pSaveBaseData->stBaseData.tLastTakeCharityCoinTime,pSaveBaseData->stBaseData.nTodayPlayTimes,
// 			pSaveBaseData->stBaseData.nYesterdayPlayTimes,pSaveBaseData->stBaseData.nTodayWinCoin,pSaveBaseData->stBaseData.nYesterdayWinCoin,
// 			(unsigned int)pSaveBaseData->stBaseData.tTakeMasterStudentRewardTime,pSaveBaseData->stBaseData.nRechargeTimes,pSaveBaseData->stBaseData.nCurOnlineBoxID,pSaveBaseData->stBaseData.nOnlineBoxPassedTime,pSaveBaseData->stBaseData.nUserUID) ;
// 			CDBRequestQueue::SharedDBRequestQueue()->PushRequest(pRequest) ;
// 		}
// 		break ;
// 	case MSG_SAVE_PLAYER_COIN:
// 		{
// 			stMsgGameServerSavePlayerCoin* pSaveCoin = (stMsgGameServerSavePlayerCoin*)pmsg ;
// 			pdata->nSessionID = pSaveCoin->nSessionID ;
// 			pdata->nExtenArg1 = pSaveCoin->nUserUID ;
// 
// 			stDBRequest* pRequest = CDBRequestQueue::SharedDBRequestQueue()->GetReserveRequest();
// 			pRequest->cOrder = eReq_Order_Low ;
// 			pRequest->eType = eRequestType_Update ;
// 			pRequest->nRequestUID = pmsg->usMsgType ;
// 			pRequest->pUserData = pdata;
// 			pRequest->nSqlBufferLen = sprintf_s(pRequest->pSqlBuffer,"UPDATE gamedb.account SET nCoin = '%I64d', nDiamoned = '%d' WHERE UserUID = '%d'",pSaveCoin->nCoin,pSaveCoin->nDiamoned,pSaveCoin->nUserUID) ;
// 			CDBRequestQueue::SharedDBRequestQueue()->PushRequest(pRequest) ;
// 		}
// 		break;  
// 	case MSG_SAVE_FRIEND_LIST:
// 		{
// 			stMsgGameServerSaveFirendList* pSaveFriend = (stMsgGameServerSaveFirendList*)pmsg ;
// 			pdata->nSessionID = pSaveFriend->nSessionID ;
// 			pdata->nExtenArg1 = pSaveFriend->nUserUID ;
// 
// 			stDBRequest* pRequest = CDBRequestQueue::SharedDBRequestQueue()->GetReserveRequest();
// 			pRequest->cOrder = eReq_Order_Low ;
// 			pRequest->nRequestUID = pmsg->usMsgType ;
// 			pRequest->pUserData = pdata;
// 			pRequest->eType = eRequestType_Update ;
// 
// 			char* pBuffer = (char*)pmsg ;
// 			pBuffer += sizeof(stMsgGameServerSaveFirendList);
// 
// 			char *pFriendListBuffer = new char[sizeof(stServerSaveFrienItem)*pSaveFriend->nFriendCount*2+1] ;
// 			memset(pFriendListBuffer,0,sizeof(sizeof(stServerSaveFrienItem)*pSaveFriend->nFriendCount*2+1));
// 			m_pTheApp->GetDBThread()->EscapeString(pFriendListBuffer,pBuffer,pSaveFriend->nFriendCount * sizeof(stServerSaveFrienItem) ) ;
// 			unsigned int nSaveTime = (unsigned int)time(NULL) ;
// 			pRequest->nSqlBufferLen = sprintf_s(pRequest->pSqlBuffer,"UPDATE playerfriend SET friendCount = '%u',contentData = '%s',saveTime = '%u' WHERE userUID = '%d'",pSaveFriend->nFriendCount,pFriendListBuffer,nSaveTime,pSaveFriend->nUserUID) ;
// 			CDBRequestQueue::SharedDBRequestQueue()->PushRequest(pRequest) ;
// 			delete[]pFriendListBuffer ;
// 		}
// 		break;
// 	case MSG_REQUEST_FRIEND_LIST:
// 		{
// 			stMsgGameServerRequestFirendList* pRequestFriend = (stMsgGameServerRequestFirendList*)pmsg ;
// 			pdata->nSessionID = pRequestFriend->nSessionID ;
// 			pdata->nExtenArg1 = 0 ;  // more than one time select ; 
// 
// 			stDBRequest* pRequest = CDBRequestQueue::SharedDBRequestQueue()->GetReserveRequest();
// 			pRequest->cOrder = eReq_Order_High ;
// 			pRequest->eType = eRequestType_Select ;
// 			pRequest->nRequestUID = pmsg->usMsgType ;
// 			pRequest->pUserData = pdata;
// 			pRequest->nSqlBufferLen = sprintf_s(pRequest->pSqlBuffer,"SELECT * FROM playerfriend WHERE userUID = '%u'",pRequestFriend->nUserUID ) ;
// 			CDBRequestQueue::SharedDBRequestQueue()->PushRequest(pRequest) ;
// 		}
// 		break;
// 	case MSG_REQUEST_FRIEND_BRIFDATA_LIST:
// 		{
// 			stMsgGameServerRequestFriendBrifDataList* pRet = (stMsgGameServerRequestFriendBrifDataList*)pmsg ;
// 			pdata->nSessionID = pRet->nSessionID ;
// 
// 			stDBRequest* pRequest = CDBRequestQueue::SharedDBRequestQueue()->GetReserveRequest();
// 			pRequest->cOrder = eReq_Order_High ;
// 			pRequest->eType = eRequestType_Select ;
// 			pRequest->nRequestUID = pmsg->usMsgType ;
// 			pRequest->pUserData = pdata;
// 			char* pBffer = (char*)pRet ;
// 			pBffer += sizeof(stMsgGameServerRequestFriendBrifDataList);
// 			unsigned int * pUserUID = (unsigned int*)pBffer ;
// 			pRequest->nSqlBufferLen = sprintf_s(pRequest->pSqlBuffer,"SELECT %s FROM playerfriend WHERE userUID = '%u'",PLAYER_BRIF_DATA,*pUserUID ) ;
// 			--pRet->nFriendCount ;
// 			while ( pRet->nFriendCount--)
// 			{
// 				pRequest->nSqlBufferLen = sprintf_s(pRequest->pSqlBuffer,"%s || userUID = '%u'",pRequest->pSqlBuffer,*pUserUID ) ;
// 				++pUserUID ;
// 			}
// 			CDBRequestQueue::SharedDBRequestQueue()->PushRequest(pRequest) ;
// 		}
// 		break;
// 	case MSG_PLAYER_SERACH_PEERS:
// 		{
// 			stMsgGameServerGetSearchFriendResult* pMsgRet = (stMsgGameServerGetSearchFriendResult*)pmsg ;
// 			pdata->nSessionID = pMsgRet->nSessionID ;
// 
// 			stDBRequest* pRequest = CDBRequestQueue::SharedDBRequestQueue()->GetReserveRequest();
// 			pRequest->cOrder = eReq_Order_High ;
// 			pRequest->eType = eRequestType_Select ;
// 			pRequest->nRequestUID = pmsg->usMsgType ;
// 			pRequest->pUserData = pdata;
// 			char* pBuffer = new char[pMsgRet->nLen * 2 + 1 ] ;
// 			memset(pBuffer,0 ,pMsgRet->nLen * 2 + 1  ) ;
// 			m_pTheApp->GetDBThread()->EscapeString(pBuffer, (char*)pMsgRet + sizeof(stMsgGameServerGetSearchFriendResult),pMsgRet->nLen) ;
// 			pRequest->nSqlBufferLen = sprintf_s(pRequest->pSqlBuffer,"SELECT %s FROM playerbasedata where userUID regexp( '%s' ) or playerName regexp('%s') limit 15;", PLAYER_BRIF_DATA,pBuffer, pBuffer ) ;
// 			CDBRequestQueue::SharedDBRequestQueue()->PushRequest(pRequest) ;
// 			delete[] pBuffer ;
// 		}
// 		break;
// 	case MSG_PLAYER_REQUEST_SEARCH_PEER_DETAIL:
// 		{
// 			stMsgGameServerGetSearchedPeerDetail* pMsgRet = (stMsgGameServerGetSearchedPeerDetail*)pmsg ;
// 			pdata->nSessionID = pMsgRet->nSessionID ;
// 
// 			stDBRequest* pRequest = CDBRequestQueue::SharedDBRequestQueue()->GetReserveRequest();
// 			pRequest->cOrder = eReq_Order_High ;
// 			pRequest->eType = eRequestType_Select ;
// 			pRequest->nRequestUID = pmsg->usMsgType ;
// 			pRequest->pUserData = pdata;
// 			pRequest->nSqlBufferLen = sprintf_s(pRequest->pSqlBuffer,"SELECT %s FROM playerbasedata where userUID = %u", PLAYER_DETAIL_DATA,pMsgRet->nPeerUserUID) ;
// 			CDBRequestQueue::SharedDBRequestQueue()->PushRequest(pRequest) ;
// 		}
// 		break;
// 	case MSG_PLAYER_REQUEST_FRIEND_DETAIL:
// 		{
// 			stMsgGameServerGetFriendDetail* pMsgRet = (stMsgGameServerGetFriendDetail*)pmsg ;
// 			pdata->nSessionID = pMsgRet->nSessionID ;
// 
// 			stDBRequest* pRequest = CDBRequestQueue::SharedDBRequestQueue()->GetReserveRequest();
// 			pRequest->cOrder = eReq_Order_High ;
// 			pRequest->eType = eRequestType_Select ;
// 			pRequest->nRequestUID = pmsg->usMsgType ;
// 			pRequest->pUserData = pdata;
// 			pRequest->nSqlBufferLen = sprintf_s(pRequest->pSqlBuffer,"SELECT %s FROM playerbasedata where userUID = %d", PLAYER_DETAIL_DATA,pMsgRet->nFriendUID) ;
// 			CDBRequestQueue::SharedDBRequestQueue()->PushRequest(pRequest) ;
// 		}
// 		break;
// 	case MSG_PLAYER_GET_MAIL_LIST:
// 		{
// 			stMsgGameServerGetMailList* pMsgRet = (stMsgGameServerGetMailList*)pmsg;
// 			pdata->nSessionID = pMsgRet->nSessionID ;
// 
// 			stDBRequest* pRequest = CDBRequestQueue::SharedDBRequestQueue()->GetReserveRequest();
// 			pRequest->cOrder = eReq_Order_High ;
// 			pRequest->eType = eRequestType_Select ;
// 			pRequest->nRequestUID = pmsg->usMsgType ;
// 			pRequest->pUserData = pdata;
// 			pRequest->nSqlBufferLen = sprintf_s(pRequest->pSqlBuffer,"select * from mail where userUID = %u order by postTime desc limit %d",pMsgRet->nUserUID, MAX_KEEP_MAIL_COUNT ) ;
// 			CDBRequestQueue::SharedDBRequestQueue()->PushRequest(pRequest) ;
// 		}
// 		break; 
// 	case MSG_PLAYER_SAVE_MAIL:
// 		{
// 			stMsgGameServerSaveMail* pMsgRet = (stMsgGameServerSaveMail*)pmsg  ;
// 			pdata->nSessionID = pMsgRet->nSessionID ;
// 			pdata->nExtenArg1 = pMsgRet->nUserUID ;
// 			char* pmsgData = (char*)pmsg ;
// 			pmsgData += sizeof(stMsgGameServerSaveMail);
// 			stMail* pMailToSave = (stMail*)pmsgData ;
// 			pdata->nExtenArg2 = (unsigned int)pMailToSave->nMailUID ;
// 
// 			stDBRequest* pRequest = CDBRequestQueue::SharedDBRequestQueue()->GetReserveRequest();
// 			pRequest->cOrder = eReq_Order_Low ;
// 			pRequest->nRequestUID = pmsg->usMsgType ;
// 			pRequest->pUserData = pdata;
// 			switch ( pMsgRet->nOperateType ) 
// 			{
// 			case eDBAct_Update:
// 				{
// 					pRequest->eType = eRequestType_Update ;
// 					pRequest->nSqlBufferLen = sprintf_s(pRequest->pSqlBuffer,"UPDATE mail SET processAct = '%d' WHERE mailUID = '%I64d'",pMailToSave->eProcessAct,pMailToSave->nMailUID ) ;
// 				}
// 				break;
// 			case eDBAct_Delete:
// 				{
// 					pRequest->eType = eRequestType_Delete ;
// 					pRequest->nSqlBufferLen = sprintf_s(pRequest->pSqlBuffer,"DELETE FROM mail WHERE mailUID ='%I64d' limit 1",pMailToSave->nMailUID ) ;
// 				}
// 				break;
// 			case eDBAct_Add:
// 				{
// 					pRequest->eType = eRequestType_Add ;
// 					char* pContent = new char[pMailToSave->nContentLen * 2 + 1 ] ;
// 					memset(pContent,0,pMailToSave->nContentLen * 2 + 1 );
// 					
// 					char* pBuffer = (char*)pMsgRet;
// 					pBuffer += sizeof(stMsgGameServerSaveMail);
// 					pBuffer += sizeof(stMail);
// 					m_pTheApp->GetDBThread()->EscapeString(pContent,pBuffer,pMailToSave->nContentLen ) ;
// 					CLogMgr::SharedLogMgr()->PrintLog("mail title content Len = %d",pMailToSave->nContentLen) ;
// 					pRequest->nSqlBufferLen = sprintf_s(pRequest->pSqlBuffer,"INSERT INTO mail (mailUID, userUID,postTime,mailType,mailContentLen,mailContent,processAct) VALUES ('%I64d', '%u','%u','%u','%u','%s','%u')",
// 						pMailToSave->nMailUID,pMsgRet->nUserUID,pMailToSave->nPostTime,pMailToSave->eType,pMailToSave->nContentLen,pContent,pMailToSave->eProcessAct) ;
// 					delete[] pContent ;
// 				}
// 				break;
// 			default:
// 				CLogMgr::SharedLogMgr()->ErrorLog("unknown save mail operation type !") ;
// 				pRequest->nSqlBufferLen = sprintf_s(pRequest->pSqlBuffer,"") ;
// 				break;
// 			}
// 			CDBRequestQueue::SharedDBRequestQueue()->PushRequest(pRequest) ;
// 		}
// 		break; 
// 	case MSG_GAME_SERVER_GET_MAX_MAIL_UID:
// 		{
// 			stDBRequest* pRequest = CDBRequestQueue::SharedDBRequestQueue()->GetReserveRequest();
// 			pRequest->cOrder = eReq_Order_Normal ;
// 			pRequest->eType = eRequestType_Select ;
// 			pRequest->nRequestUID = MSG_GAME_SERVER_GET_MAX_MAIL_UID;
// 			pRequest->pUserData = pdata;
// 			pRequest->nSqlBufferLen = sprintf_s(pRequest->pSqlBuffer,"(select max(mail.mailUID) FROM mail)") ;
// 			CDBRequestQueue::SharedDBRequestQueue()->PushRequest(pRequest) ;
// 		}
// 		break;
// 	case MSG_REQUEST_ITEM_LIST:
// 		{
// 			stMsgGameServerRequestItemList* pMsgRet = (stMsgGameServerRequestItemList*)pmsg ;
// 			pdata->nSessionID = pMsgRet->nSessionID ;
// 			pdata->nExtenArg1 = pMsgRet->nUserUID ;
// 
// 			stDBRequest* pRequest = CDBRequestQueue::SharedDBRequestQueue()->GetReserveRequest();
// 			pRequest->cOrder = eReq_Order_High ;
// 			pRequest->eType = eRequestType_Select ;
// 			pRequest->nRequestUID = pmsg->usMsgType ;
// 			pRequest->pUserData = pdata;
// 			pRequest->nSqlBufferLen = sprintf_s(pRequest->pSqlBuffer,"select * from playeritems where userUID = %u",pMsgRet->nUserUID ) ;
// 			CDBRequestQueue::SharedDBRequestQueue()->PushRequest(pRequest) ;
// 		}
// 		break;
// 	case MSG_SAVE_ITEM_LIST:
// 		{
// 			stMsgGameServerSaveItemList* pMsgRet = (stMsgGameServerSaveItemList*)pmsg ;
// 			pdata->nSessionID = pMsgRet->nSessionID ;
// 			pdata->nExtenArg1 = pMsgRet->nUserUID ;
// 			char* pBuffer = new char[pMsgRet->nOwnItemKindCount * sizeof(stPlayerItem) * 2 + 1] ;
// 			memset(pBuffer,0,pMsgRet->nOwnItemKindCount * sizeof(stPlayerItem) * 2 + 1);
// 			m_pTheApp->GetDBThread()->EscapeString(pBuffer, (((char*)pmsg) + sizeof(stMsgGameServerSaveItemList)),pMsgRet->nOwnItemKindCount * sizeof(stPlayerItem) ) ;
// 
// 			stDBRequest* pRequest = CDBRequestQueue::SharedDBRequestQueue()->GetReserveRequest();
// 			pRequest->cOrder = eReq_Order_Low ;
// 			pRequest->pUserData = pdata;
// 			pRequest->nRequestUID = pmsg->usMsgType ;
// 			pRequest->eType = eRequestType_Update ;
// 			pRequest->nSqlBufferLen = sprintf_s(pRequest->pSqlBuffer,"UPDATE playeritems SET itemsData = '%s',ownItemsKindCount = '%u' WHERE userUID = '%d'",pBuffer,pMsgRet->nOwnItemKindCount,pMsgRet->nUserUID ) ;
// 			CDBRequestQueue::SharedDBRequestQueue()->PushRequest(pRequest) ;
// 			delete[] pBuffer ;
// 		}
// 		break; 
// 	case MSG_REQUEST_RANK:
// 		{
// 			stMsgGameServerRequestRank* pMsgRet = (stMsgGameServerRequestRank*)pmsg ;
// 			pdata->nExtenArg1 = pMsgRet->eType ;
// 			stDBRequest* pRequest = CDBRequestQueue::SharedDBRequestQueue()->GetReserveRequest();
// 			pRequest->cOrder = eReq_Order_Normal ;
// 			pRequest->eType = eRequestType_Select ;
// 			pRequest->nRequestUID = pmsg->usMsgType ;
// 			pRequest->pUserData = pdata;
// 			switch ( pMsgRet->eType)
// 			{
// 			case eRank_AllCoin:
// 				{
// 					pRequest->nSqlBufferLen = sprintf_s(pRequest->pSqlBuffer,"select yesterdayWinCoin ,%s from playerbasedata where userUID !=0 order by coin desc limit %d",PLAYER_DETAIL_DATA,RANK_SHOW_PEER_COUNT) ;
// 				}
// 				break;
// 			case eRank_YesterDayWin:
// 				{
// 					unsigned int tYesterDay = (unsigned int)time(NULL) - 24 * 3600 ;
// 					//struct tm tmNow = *localtime(&tNow) ;
// 					//tmNow.tm_hour = 0 ;
// 					//tmNow.tm_min = 0 ;
// 					//tmNow.tm_sec = 0 ;
// 					//time_t tZero = mktime(&tmNow) ;
// 					pRequest->nSqlBufferLen = sprintf_s(pRequest->pSqlBuffer,"select yesterdayWinCoin ,%s from playerbasedata where (offlineTime >= '%u' || lastLoginTime >= '%u') order by todayWinCoin desc limit %d",PLAYER_DETAIL_DATA,tYesterDay,tYesterDay,RANK_SHOW_PEER_COUNT) ;
// 				}
// 				break;
// 			case eRank_SingleWinMost:
// 				{
// 					pRequest->nSqlBufferLen = sprintf_s(pRequest->pSqlBuffer,"select yesterdayWinCoin ,%s from playerbasedata where userUID !=0 order by singleWinMost desc limit %d",PLAYER_DETAIL_DATA,RANK_SHOW_PEER_COUNT) ;
// 				}
// 				break;
// 			default:
// 				CLogMgr::SharedLogMgr()->ErrorLog("unknown rank type to select type = %d",pMsgRet->eType) ;
// 				break;
// 			}
// 			CDBRequestQueue::SharedDBRequestQueue()->PushRequest(pRequest) ;
// 		}
// 		break;
// 	//case MSG_GET_SHOP_BUY_RECORD:
// 	//	{
// 	//		stMsgGameServerGetShopBuyRecord* pMsgRet = (stMsgGameServerGetShopBuyRecord*)pmsg ;
// 	//		pdata->nSessionID = pMsgRet->nSessionID ;
// 	//		pdata->nExtenArg1 = pMsgRet->nUserUID ;
// 
// 	//		stDBRequest* pRequest = CDBRequestQueue::SharedDBRequestQueue()->GetReserveRequest();
// 	//		pRequest->cOrder = eReq_Order_High ;
// 	//		pRequest->eType = eRequestType_Select ;
// 	//		pRequest->nRequestUID = pmsg->usMsgType ;
// 	//		pRequest->pUserData = pdata;
// 	//		pRequest->nSqlBufferLen = sprintf_s(pRequest->pSqlBuffer,"select * from playershopbuyrecord where nUserUID = %d",pMsgRet->nUserUID ) ;
// 	//		CDBRequestQueue::SharedDBRequestQueue()->PushRequest(pRequest) ;
// 	//	}
// 	//	break;
// 	//case MSG_SAVE_SHOP_BUY_RECORD:
// 	//	{
// 	//		stMsgGameServerSaveShopBuyRecord* pMsgRet = (stMsgGameServerSaveShopBuyRecord*)pmsg;
// 	//		pdata->nSessionID = pMsgRet->nSessionID ;
// 	//		pdata->nExtenArg1 = pMsgRet->nUserUID ;
// 
// 	//		stDBRequest* pRequest = CDBRequestQueue::SharedDBRequestQueue()->GetReserveRequest();
// 	//		pRequest->cOrder = eReq_Order_Low ;
// 	//		pRequest->nRequestUID = pmsg->usMsgType ;
// 	//		pRequest->pUserData = pdata;
// 
// 	//		char* pSaveBuffer = new char[pMsgRet->nBufferLen * 2 + 1 ] ;
// 	//		memset(pSaveBuffer,0,pMsgRet->nBufferLen * 2 + 1) ;
// 	//		char* pBuffer = (char*)pmsg ;
// 	//		pBuffer += sizeof(stMsgGameServerSaveShopBuyRecord);
// 	//		m_pTheApp->GetDBThread()->EscapeString(pSaveBuffer,pBuffer,pMsgRet->nBufferLen ) ;
// 	//		if ( pMsgRet->bAdd )
// 	//		{
// 	//			pRequest->eType = eRequestType_Add ;
// 	//			pRequest->nSqlBufferLen = sprintf_s(pRequest->pSqlBuffer,"INSERT INTO `gamedb`.`playershopbuyrecord` (`nUserUID`, `pBuffer`) VALUES ('%d', '%s');",pMsgRet->nUserUID,pSaveBuffer) ;
// 	//		}
// 	//		else
// 	//		{
// 	//			pRequest->eType = eRequestType_Update ;
// 	//			pRequest->nSqlBufferLen = sprintf_s(pRequest->pSqlBuffer,"UPDATE gamedb.playershopbuyrecord SET pBuffer = '%s' WHERE nUserUID = '%d'",pSaveBuffer,pMsgRet->nUserUID) ;
// 	//		}
// 	//		CDBRequestQueue::SharedDBRequestQueue()->PushRequest(pRequest) ;
// 	//		delete[] pSaveBuffer ;
// 	//	}
// 	//	break;
// 	case MSG_GAME_SERVER_SAVE_MISSION_DATA:
// 		{
// 			stMsgGameServerSaveMissionData* pMissionData = (stMsgGameServerSaveMissionData*)pmsg ;
// 			pdata->nSessionID = pMissionData->nSessionID ;
// 			pdata->nExtenArg1 = pMissionData->nUserUID ;
// 
// 			stDBRequest* pRequest = CDBRequestQueue::SharedDBRequestQueue()->GetReserveRequest();
// 			pRequest->cOrder = eReq_Order_Low ;
// 			pRequest->nRequestUID = pmsg->usMsgType ;
// 			pRequest->pUserData = pdata;
// 
// 			char* pSaveBuffer = new char[pMissionData->nMissonCount * sizeof(stMissionSate) * 2 + 1 ] ;
// 			memset(pSaveBuffer,0,pMissionData->nMissonCount * sizeof(stMissionSate) * 2 + 1) ;
// 			char* pBuffer = (char*)pmsg ;
// 			pBuffer += sizeof(stMsgGameServerSaveMissionData);
// 			m_pTheApp->GetDBThread()->EscapeString(pSaveBuffer,pBuffer,pMissionData->nMissonCount * sizeof(stMissionSate)) ;
// 			pRequest->eType = eRequestType_Update ;
// 			pRequest->nSqlBufferLen = sprintf_s(pRequest->pSqlBuffer,"UPDATE playermission SET missionData = '%s',saveTime = '%u',missionCount = '%u' WHERE userUID = '%d'",pSaveBuffer,pMissionData->nSavetime,pMissionData->nMissonCount,pMissionData->nUserUID) ;
// 			CDBRequestQueue::SharedDBRequestQueue()->PushRequest(pRequest) ;
// 			delete[] pSaveBuffer ;
// 		}
// 		break;
// 	case MSG_GAME_SERVER_GET_MISSION_DATA:
// 		{
// 			stMsgGameServerGetMissionData* pMsgRet = (stMsgGameServerGetMissionData*)pmsg ;
// 			pdata->nSessionID = pMsgRet->nSessionID ;
// 			pdata->nExtenArg1 = pMsgRet->nUserUID ;
// 
// 			stDBRequest* pRequest = CDBRequestQueue::SharedDBRequestQueue()->GetReserveRequest();
// 			pRequest->cOrder = eReq_Order_High ;
// 			pRequest->eType = eRequestType_Select ;
// 			pRequest->nRequestUID = pmsg->usMsgType ;
// 			pRequest->pUserData = pdata;
// 			pRequest->nSqlBufferLen = sprintf_s(pRequest->pSqlBuffer,"select * from playermission where userUID = %d",pMsgRet->nUserUID ) ;
// 			CDBRequestQueue::SharedDBRequestQueue()->PushRequest(pRequest) ;
// 		}
// 		break;
	default:
		{
			m_vReserverArgData.push_back(pdata) ;
			CLogMgr::SharedLogMgr()->ErrorLog("unknown msg type = %d",pmsg->usMsgType ) ;
		}
	}

	if ( pRequest->nSqlBufferLen == 0 || pRequest->eType == eRequestType_Max )
	{
		CLogMgr::SharedLogMgr()->ErrorLog("a request sql len = 0 , msg = %d" , pRequest->nRequestUID ) ;
		
		CDBRequestQueue::VEC_DBREQUEST v ;
		v.push_back(pRequest) ;
		CDBRequestQueue::SharedDBRequestQueue()->PushReserveRequest(v);
	}
	else
	{
		CDBRequestQueue::SharedDBRequestQueue()->PushRequest(pRequest) ;
	}
}