hxp
54 分钟以前 ce8d11938d9444fde6a89774cfcb12ac0a7b1a58
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
=-hc@s ddlmZddlZddlmZddlZddlmZddlmZddl    m
Z
m Z m Z m Z mZmZmZddlmZddlmZmZddlZed    ƒZddlZyddlZWnek
rddlZnXd
efd „ƒYZdS( iÿÿÿÿ(tThreadN(tsleep(tmylog(tCommFunc(tSingletonObjectt CommonDefinet    FuncGradetGlobalFunctionsterrort
SpeedGradetStat(t MongoDBServer(tSendPackProtocolt
MMORPGPacksConfig.DBConfigtCtrlDBcBséeZd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z    d„Z
d    „Z d
„Z d „Z d „Zd „Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„ZRS(cCstj|d|ƒg|_x9td|ƒD](}d}|jj|tjƒgƒq,W||_d|_d|_    d|_
d|_ t |_ tj|ƒ|_tj|ƒ|_ddg|_tjƒ|_t |_d|_t |_d|_d|_dS(Ntnameit((Rt__init__tpriorityQueueListtxrangetappendtQueuet ctrlDBManagertNonet _CtrlDB__hostt _CtrlDB__portt_CtrlDB__dbNamet_CtrlDB__reconnectCnttFalset_CtrlDB__elegantExitRtFuncGradeManagertfuncGradeManagerR    t SpeedGradeMgrtspeedGradeManagertStatet    threadingtLockt
StateMutextQueueSizeExceedThresholdtBlockCntt    Connectedt
connectiontdb(tselft
threadNametpriorityQueueSizeRtitqueueProcessRequestType((s&.\\ServersRoute\LogicProcess\CtrlDB.pyRs*                                              cCsddg|_dS(Ni(R"(R+tRequest((s&.\\ServersRoute\LogicProcess\CtrlDB.pyt
clearState6scCs|tjƒg|_dS(N(ttimeitt default_timerR"(R+tcurrentProcessingRequest((s&.\\ServersRoute\LogicProcess\CtrlDB.pyt updateState9scCsH|jd}|jd}|s$dStjƒ}d|||||fS(Niis-s)Type = %s, process time = %s secs, %s, %s(R"R2R3(R+tstatetstartProcessTickt currentTime((s&.\\ServersRoute\LogicProcess\CtrlDB.pytgetState<s    cCs|jS(N(R(R+((s&.\\ServersRoute\LogicProcess\CtrlDB.pytGetFuncGradeManagerEscCs|jS(N(R!(R+((s&.\\ServersRoute\LogicProcess\CtrlDB.pytGetSpeedGradeMgrHscCs|jj|ƒS(N(Rt GetFuncGrade(R+tfuncName((s&.\\ServersRoute\LogicProcess\CtrlDB.pyR<KscCs|jj|ƒS(N(R!t GetSpeedGrade(R+R((s&.\\ServersRoute\LogicProcess\CtrlDB.pyR>NscCs t|jƒS(N(tlenR(R+((s&.\\ServersRoute\LogicProcess\CtrlDB.pytgetPrioorityQueueCntQscCs|j|djƒS(Ni(Rtqsize(R+tindex((s&.\\ServersRoute\LogicProcess\CtrlDB.pytgetPriorityQueueSizeTscCsEtjƒjƒ}tj|jƒ_|j|ƒ|jj    |ƒdS(N(
Rt getPackPooltallocRtatInnert getPackHeadttypet    setBufferRt dbRequestPush(R+tbuftsendPack((s&.\\ServersRoute\LogicProcess\CtrlDB.pyt sendDBRequestWs c    Cs®tjd||||||fƒtjƒjƒ}|j|ƒ||jƒ_||jƒ_||jƒ_    ||jƒ_
||jƒ_ |j |ƒ|j j|ƒdS(NsksendViaSessiondID = %s, sessionID = %s, poolIndex = %s, type = %s, dstSvrType = %s,         srcSvrType = %s(RtdebugRRDREt setSessionIDRGt    sessionIDt    poolIndexRHt
dstSvrTypet
srcSvrTypeRIRt dbAnswerPush(    R+tsendViaSessiondIDRPRQRHRRRSRKRL((s&.\\ServersRoute\LogicProcess\CtrlDB.pytpackSend]s  cCs5tjƒj|jƒƒ}|r1|j|ƒndS(N(R t getServerMgrtFindServerByClientSessionIDt getSessionIDtpushSend(R+tpacktoServer((s&.\\ServersRoute\LogicProcess\CtrlDB.pyRZkscCsHxAtdt|jƒƒD]'}|j|d}||krtSqWtS(Ni(RR?RtTrueR(R+t requestTypeR.trequestTypeList((s&.\\ServersRoute\LogicProcess\CtrlDB.pyt
canProcessqs
 cCs||_||_dS(N(RR(R+thosttport((s&.\\ServersRoute\LogicProcess\CtrlDB.pyt    setServerys    cCs||_||_||_dS(N(Rt_CtrlDB__dbUsert_CtrlDB__dbPwd(R+tdbNametusertpwd((s&.\\ServersRoute\LogicProcess\CtrlDB.pyt setDataBase}s        cCs d}tj|jƒ|ƒ\}}d}xGtdt|jƒƒD]-}|j|d}||krC|}PqCqCW|dks•|t|jƒkrÂtjdtjd|ƒ}t    j|ƒt
St    j d||fƒ|j d|ƒj ƒ|j|dj|ƒtS(NiiÿÿÿÿRspriorityLV = %s not found!spack type = %s add to queue %ssrequestPush_%si(RtReadBYTEt    getBufferRR?RRt    formatMsgt ERROR_NO_42RRRNR>tRefreshtputR](R+R[tposR^t
priorityLVR.R_tmsg((s&.\\ServersRoute\LogicProcess\CtrlDB.pyt requestPushŒs  ! cCstjrd}xÅtdt|jƒƒD]«}|j|djƒtjkr¦|jsÓ|jd7_t    |_t
j d|j ƒ||j|djƒfƒqÓq(|j|djƒtj kr(|d7}q(q(W|jr|t|jƒkrt|_t
j d|j ƒƒqnxãtdt|jƒƒD]É}y|j|djƒ}Wntjk
rnq4nX|r4d}tj|jƒ|ƒ\}}|jd|ƒjƒtjƒ}|j|ƒt
jd||jƒfƒtjƒj|ƒ|Sq4WdS(Niis!!!*** %s queue %s size = %ss$!!!*** %s queue resume low balanced!s requestPop_%ss)pop pack from queue(priorityLV = %s) = %s( tDBConfigt StartProfileRR?RRAtProfileQueueThresholdMaxR&R'R]RtwarningtgetNametProfileQueueThresholdMinRt
get_nowaitRtEmptyRRjRkR>RnR tMMORPGPacket_StacktassignRNt outputStringRRDtfreeR(R+tlowBalanceQueueCntR.R[RpR^tret((s&.\\ServersRoute\LogicProcess\CtrlDB.pyt __requestPopžs8             7       c    Csx    tr y-|jsÄtjd|j|jfƒtj|j|jdtƒ|_    |j    |j
|_ t|_tjd|j|jfƒt j |j|jd|j    ƒs±dS|j|j ƒn|jƒ}|dkràPntjƒjd7_d}d}|jƒdkr_d}tj|jƒ|ƒ\}}|j|ƒtjr_tjƒ}q_n|j|j |ƒ}|rÙtjrÉ|rÉtjƒ|}|tj dkrÉtj!d||fƒqÉn|j"|ƒntj#d    t$|jƒdƒƒ|rwnt%j&d
t%j'd |j(ƒƒ}tj%|ƒWqtj)j*k
rÒ|j+d7_+tjd |j|j|j+fƒ|j+tj,krÉt%j&d t%j-d|j|jfƒ}tj.|ƒdSt}qt%j&d
t%j/dt0j1ƒƒ}tj%|ƒqXqWdS(Ns!!!!!!!!!!!connect %s:%stauto_start_requests!!!!!!!!!!!connect %s:%s ok!R)iig@@s.!!!---request type = %s process time = %s secssend process request type = %dRsfailed to process pack = %ss"try reconnecting %s:%s cnt = %s...tfatalsreconnect %s:%s failed!s%s(2R]R(RtinfoRRtpymongot
ConnectionRR)RR*Rt LoginMongoDBRdRet onConnectedOKt_CtrlDB__requestPopRR
tGetStattDBProcessCountt    getLengthRRjRkR5RtRuR2R3trequestLogicProcesstProfileThresholdRwR1RNtordRRlt ERROR_NO_43R~terrorst AutoReconnectRtmaxReconnectCntt ERROR_NO_44R„t ERROR_NO_45t    tracebackt
format_exc(    R+R[R^tprocessStartTickRptresultt processTimeRrt
bConnected((s&.\\ServersRoute\LogicProcess\CtrlDB.pyt__requestProcessÀs\        !    !       !"#(     "cCs|jƒdS(N(t_CtrlDB__requestProcess(R+((s&.\\ServersRoute\LogicProcess\CtrlDB.pytrunþscCstjdƒdS(s×ÓÀàʵÏÖs
unhandled!N(RRw(R+R*R[((s&.\\ServersRoute\LogicProcess\CtrlDB.pyRŽscCsdS(s×ÓÀàʵÏÖN((R+R*((s&.\\ServersRoute\LogicProcess\CtrlDB.pyR‰scCs:t|_tj|ƒtjd|jƒ|jfƒdS(NsThread %s(%s) start!(RRRtstartRR…Rxtident(R+((s&.\\ServersRoute\LogicProcess\CtrlDB.pyR 
s     cCsXtjd|jƒƒt|_x|jƒr<tdƒq#Wtjd|jƒƒdS(NsStoping thread %s...gš™™™™™¹?sThread %s stop OK!(RR…RxR]RtisAliveR(R+((s&.\\ServersRoute\LogicProcess\CtrlDB.pytstops
    cCs„tjƒ}||_d|_|jƒ|}|j|jƒ|jƒj|jƒj    |jƒj
|jƒj |jƒj |ƒdS(Ni( R ttagDBToGameServerHeadtTypetSuccesst    GetBufferRVRYRGRPRQRHRSRR(R+trecvPackRHtdataRLtsendBuf((s&.\\ServersRoute\LogicProcess\CtrlDB.pytsendGameServerStrings         (t__name__t
__module__RR1R5R9R:R;R<R>R@RCRMRVRZR`RcRiRsRŠRžRŸRŽR‰R R£R«(((s&.\\ServersRoute\LogicProcess\CtrlDB.pyRs2                                                                            "    >                    (R#RRttimeRR†tCommonRRtDBCommonRRRRRR    R
tNetR tProtocolR R R—t
__import__RtR2t ImportErrortdummy_threadingR(((s&.\\ServersRoute\LogicProcess\CtrlDB.pyt<module>s   4