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
v-9hc@sddlmZddlZddlmZddlmZmZmZm    Z    ddl
m Z m Z ddl mZmZmZedƒZddlmZddlZdd    lmZmZddlZddlZddlZejƒad
efd „ƒYZdS( iÿÿÿÿ(tThreadN(tsleep(t CommonDefineterrortStattSingletonObject(tCommFunctmylog(t
MMORPGPacktRecvPackProtocoltSendPackProtocolsConfig.DBConfig(t MongoDBServer(tProjSpecialProcesstGMToolCommandMgrtLogicProcessThreadcBs†eZd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z    d„Z
d    „Z d
„Z d „Z d „Zd „ZRS(cCsetj|ddƒ||_tjtjtjtjtjtj    f|_
t j ƒ|_ t |_dS(NtnameR(Rt__init__t_LogicProcessThread__serverRtlsdDataServerPreparedAsktgstGMToolCommandtgstGMToolCommandResulttgstBroadcastMergeClienttgstSendDBMergeClientMsgtgstSendDBMergeClientListMsgt'_LogicProcessThread__processRequestTypetQueuet!_LogicProcessThread__requestQueuetFalset _LogicProcessThread__elegantExit(tselft    serverObj((s%.\\ServersRoute\LogicProcessThread.pyRs    cCsl|jƒjtjkr1|jƒdkr1tSnd}tj|jƒ|ƒ\}}||j    krht
StS(Nii( t getPackHeadttypeRtatInnert    getLengthRRtReadBYTEt    getBufferRtTrue(RtpacktposR ((s%.\\ServersRoute\LogicProcessThread.pyt
canProcess'scCs|jj|ƒdS(N(Rtput(RR&((s%.\\ServersRoute\LogicProcessThread.pyt requestPush6scCs/y|jjƒ}Wntjk
r*dSX|S(N(Rt
get_nowaitRtEmptytNone(RR&((s%.\\ServersRoute\LogicProcessThread.pytrequestPopNoWait9s
cCsêd}tj|jƒ|ƒ\}}|tjkrÄtjdƒtjƒ}tj    |_
|j j |j ƒ|jƒj|jƒj|jƒj|jƒj|jƒj|jƒƒtjdƒtS|tjkrþtjdƒ|j|ƒtjdƒtS|tjkr8tjdƒ|j|ƒtjdƒtS|tjkrrtjdƒ|j|ƒtjd    ƒtS|tjkr¬tjd
ƒ|j|ƒtjd ƒtS|tjkrætjd ƒ|j|ƒtjd ƒtSt S(NisReturn data server prepared!sReturn data server prepared!!!s#onInnerServerPack gstGMToolCommand!s'onInnerServerPack gstGMToolCommand! Ends)onInnerServerPack gstGMToolCommandResult!s-onInnerServerPack gstGMToolCommandResult! Ends0onInnerServerPack gstBroadcastMergeClient start!s.onInnerServerPack gstBroadcastMergeClient end!s0onInnerServerPack gstSendDBMergeClientMsg start!s.onInnerServerPack gstSendDBMergeClientMsg end!s4onInnerServerPack gstSendDBMergeClientListMsg start!s2onInnerServerPack gstSendDBMergeClientListMsg end!(!RR#R$RRRtdebugR
ttagDataServerInitOKtdgDataServerPrepareOKtTypeRtpackSendBySessionIDt getSessionIDRt    sessionIDt    poolIndexR t
srcSvrTypet
dstSvrTypet    GetBufferR%RtOnGMToolCommandRtOnGMToolCommandResultRtOnBroadcastMergeClientRtOnMergeMsgToClientRtOnMergeMsgToClientListR(RR&R'R tsendPack((s%.\\ServersRoute\LogicProcessThread.pytonInnerServerPack@sH   *1                cCs:t|_tj|ƒtjd|jƒ|jfƒdS(NsThread %s(%s) start...(RRRtstartRtinfotgetNametident(R((s%.\\ServersRoute\LogicProcessThread.pyRAgs     cCsXtjd|jƒƒt|_x|jƒr<tdƒq#Wtjd|jƒƒdS(NsStopping thread %s...gš™™™™™¹?sThread %s stop ok!(RRBRCR%RtisAliveR(R((s%.\\ServersRoute\LogicProcessThread.pytstopls
    cCs,x%tr'y•|jƒ}|dkr(Pntjƒjd7_|jƒj}|tj    kr†|j
|ƒr†t j ƒj |ƒwq†ntjd|jƒƒWqtk
rë}tjdtjd|tjƒfƒ}tj|ƒqqtjdtjdtjƒƒ}tj|ƒqqXqWdS(Nispack %s not processed!Rs"Exception %s caught!traceback = %ss'Unknown exception caught!traceback = %s(R%R.R-RtGetStattLogicProcessCountRR RR!R@Rt getPackPooltfreeRtwarningt outputStringt    ExceptionRt    formatMsgt ERROR_NO_28t    tracebackt
format_exc(RR&tpackTypetetmsg((s%.\\ServersRoute\LogicProcessThread.pytrunss(          ( " c    CsÃtjƒjdƒ}|sdStjƒ}|j|jƒdƒtj|_    t
j ƒj ƒ}x]|D]U}|j |j|jƒj|jƒjtj|jƒj|jƒj|jƒƒqfWdS(NtMergei(R t getServerMgrt    GetServerR    ttagGDBroadcastMergeClienttReadDataR$RtdgBroadcastMergeClientR2tMergeProxyClientMgrtgetMergeProxyClientMgrt getClientListR3R5RR6t atMergeLogicR7R8R9(RR&Rt broadcastPackt
clientListtclient((s%.\\ServersRoute\LogicProcessThread.pyR<Œs         cCsðtjƒjdƒ}|sdStjƒ}|j|jƒdƒtjƒj    |j
ƒ}|scdStj ƒ}|j ƒt j|_|j|_|j|_|j|j|jƒj|jƒjt j|jƒj|jƒj|jƒƒdS(NRVi(R RWRXR    ttagGDMergeMsgToClientRZR$R\R]tfindClientByCompoundKeytGroupIDRYtClearRR[R2tDatatDataLenR3R5RR6R_R7R8R9(RR&RttoMergeClientMsgRbR`((s%.\\ServersRoute\LogicProcessThread.pyR=­s*  
         cCstjƒjdƒ}|sdStjƒ}|j|jƒdƒtj|j    ƒ}t
j d|ƒxœ|D]”}t |ƒt krÔt|ƒdkrÔxgt|d|ddƒD]}|j||||ƒq±Wqkt |ƒtkrk|j||||ƒqkqkWdS(NRVis"OnMergeMsgToClientListÏò×Ó·þ×é %s ii(R RWRXR    ttagGDMergeMsgToClientListRZR$tcPickletloadstGroupsRR/R ttupletlentxranget!_LogicProcessThread__SendMergeMsgtint(RR&RRit    groupListtmemtgroupID((s%.\\ServersRoute\LogicProcessThread.pyR>Ìs  $"cCs¬tjƒj|ƒ}|sdStjƒ}|jƒtj|_|j    |_    |j
|_
|j |j |j ƒj |j ƒjtj|j ƒj|j ƒj|jƒƒdS(N(R\R]RdR    RYRfRR[R2RgRhR3R5RR6R_R7R8R9(RRR&RuRiRbR`((s%.\\ServersRoute\LogicProcessThread.pyt__SendMergeMsgàs  
         cCs6tjƒjdƒ}|dkr%dS|jƒdkr`tjdtjdƒ}tj    |ƒdSt
j ƒr›ddl }tj d|j|jƒƒƒn|jƒ}tjƒ}|j|jƒƒtj|j|ƒtkrådSytj||ƒWn6tjdtjdtjƒƒ}tj|ƒnXdS(NtGMTooliRsILogicProcessThread::OnGMToolCommand Recv Cmd, but no Client in GMToolPortiÿÿÿÿsbuf = %ssMLogicProcessThread::OnGMToolCommand Catch a unexpetcted exception, error = %s(R RWRXR-t GetClientCntRRNt ERROR_NO_173Rt DeployErrorRtIsDebugtbinasciiR/tb2a_hexR$R4R    t tagGMCommandRZt
g_GMCMDMgrtAddPairtOrderIdRR R:t ERROR_NO_172RPRQ(RR&t GmToolServerRTR|R5trecvPack((s%.\\ServersRoute\LogicProcessThread.pyR:øs(    #  "cCs tjƒ}|j|jƒƒytj|ƒ}Wn6tjdtjdt    j
ƒƒ}t j|ƒnXt j |jƒ}d}d}t jd|||fƒ|dkrÀt jdƒdStjƒ}|j|||tjtjtj|jƒƒt jdƒdS(    NRsSLogicProcessThread::OnGMToolCommandResult Catch a unexpetcted exception, error = %siiÿÿÿÿsMSendToGMToolCommandResult sendViaSessionID = %s,SessionID = %d,PoolIndex = %dts7SendToGMToolCommandResult Fail, No Client in GMToolPortsSendToGMToolCommandResult Done(R
ttagGMCommandResultRZR$R R;RRNR‚RPRQRRtPopPairRRBRKR RWR3RR!RtstGMToolt stCenterGateR9(RR&tSendPackRTtsendViaSessionIDt    SessionIDt    PoolIndext    ServerMgr((s%.\\ServersRoute\LogicProcessThread.pyR;s( "     (t__name__t
__module__RR(R*R.R@RARFRUR<R=R>RqR:R;(((s%.\\ServersRoute\LogicProcessThread.pyRs                    '                !                (t    threadingRRttimeRtDBCommonRRRRtCommonRRtProtocolRR    R
t
__import__tDBConfigtNetR RPtGMToolLogicProcessR R R\tjsonRkt GetGMOrderMgrRR(((s%.\\ServersRoute\LogicProcessThread.pyt<module>s "