xdh
2019-02-21 92eee67f85cbd29feb1287ae5a15ad0c787e95cb
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
¡/\c@sÿddlZddlZddlZddlmZddlZddlmZddlZddl    m
Z
ddl m Z ddl Z ddl mZedƒZde
fd    „ƒYZd
ejfd „ƒYZd „Zd „ZedkrûeƒndS(iÿÿÿÿN(tmylog(tsleep(tThread(tSingletonObject(t CommonDefinesConfig.DBConfigtSendPackDispatchThreadcBs#eZd„Zd„Zd„ZRS(cCs tj|ddƒ||_dS(NtnameR(Rt__init__t'_SendPackDispatchThread__asyncoreServer(tselftasyncoreServer((s.\\AsyncoreServer.pyRscCs4|jjƒtjr0tjd|jƒƒndS(Nsend of thread %s!(RtprocessSendQueuetDBConfigtMultiThreadingRtinfotgetName(R    ((s.\\AsyncoreServer.pytruns     cCs1tj|ƒtjd|jƒ|jfƒdS(NsThread %s(%s) start!(RtstartRRRtident(R    ((s.\\AsyncoreServer.pyR!s (t__name__t
__module__RRR(((s.\\AsyncoreServer.pyRs        tAsynCoreServercBsžeZdd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z    d    „Z
d
„Z d „Z d „Z d „Zd„Zdd„Zd„ZRS(iÿÿÿÿcCsktjj|ƒt|ƒ|_||_tjƒ|_t    j    ƒ|_
t    j    ƒ|_ t |_ ||_dS(N(tasyncoret
dispatcherRRt'_AsynCoreServer__sendPackDispatchThreadRtAsynServerClienttAsynServerClientMgrt    clientMgrtQueuet_AsynCoreServer__recvQueuet    sendQueuetFalset_AsynCoreServer__activet MaxClientCnt(R    RR!((s.\\AsyncoreServer.pyR's        cCs |jjƒS(N(Rt getClientCnt(R    ((s.\\AsyncoreServer.pyt GetClientCnt4scCstjdƒdS(s×ÓÀàʵÏÖs
unhandled!N(Rtwarning(R    tsocktaddrtonClientDisconnectt    recvQueue((s.\\AsyncoreServer.pytonAcceptClient7scCs|jj|ƒS(N(Rt    getClient(R    t    sessionID((s.\\AsyncoreServer.pytFindClientBySessionID?scCs |jjƒS(N(Rtqsize(R    ((s.\\AsyncoreServer.pyt sendQueueSizeBscCs|jj|ƒdS(N(Rtput(R    tpack((s.\\AsyncoreServer.pytpushSendEscCs |jjƒS(s#recv queue item cnt,but no reliable(RR-(R    ((s.\\AsyncoreServer.pyt recvQueueCntLscCs/y|jjƒ}Wntjk
r*dSX|S(N(Rt
get_nowaitRtEmptytNone(R    R0((s.\\AsyncoreServer.pytrecvQueuePopNoWaitPs
cCs|jjƒ}|S(N(Rtget(R    trecvPack((s.\\AsyncoreServer.pyt recvQueuePopXscCsúy|jƒ\}}Wn=tjk
rU}tjt|ƒƒtjtjƒƒdSX|jdkr«|j    ƒ|jkr«tjd|j||j
ƒfƒ|j ƒdStj d||j
ƒfƒ|j |||j|jƒ}|jj|ƒdS(Niÿÿÿÿs:ClientCnt > %d ,close new Client(addr = %s, SocketID = %s)s)connect accepted!addr = %s, SocketID = %s(taccepttsocketterrorRR$tunicodet    tracebackt
format_excR!R#tfilenotcloseRR)t#_AsynCoreServer__onClientDisconnectRRt    addClient(R    R%R&twhytclient((s.\\AsyncoreServer.pyt handle_accept]s$#
cCstjd|jƒdS(Ns    %s close!(RRR(R    ((s.\\AsyncoreServer.pyt handle_closeoscCsJ|jj|ƒsFtjd|jjtjƒdd|jfƒndS(Ns&%s.%s del client failed!sessionID = %sii(    Rt    delClientRtdebugt    __class__RtinspecttstackR+(R    RE((s.\\AsyncoreServer.pyt__onClientDisconnectrs#cCsXxQ|jrSy|jjƒ}Wntjk
r;d}nX|dkretjratdƒqqePn|j    ƒdkrÃ|j
j ƒ}x4|D],}t j |jƒƒ|j|jƒƒqWqn|j
j|j    ƒƒ}|dkr*t j d|jjtjƒdd|j    ƒ|jƒfƒqn|j|jƒƒtjƒj|ƒqWdS(Ngü©ñÒMbP?is#%s.%s sessionID = %s ignore pack %si(R RR3RR4R5R R Rt getSessionIDRt getClientListRRIt outputStringR1t getPackDataR*RJRRKRLRt getPackPooltfree(R    R0t
clientListREt serverClient((s.\\AsyncoreServer.pyR ws. 
     
  #cCs*tjd|ƒt|_|jj|ƒS(s?¸²¸Ç¸¸ÀàµÄͬÃû·½·¨£¬¸¸ÀàÔÚNTϵͳÏ£¬ÏÞÖÆÁËÁ¬½Ó¶ÓÁеÄ×î´óÊýÁ¿Îª5sServer start with backlog = %s(RRItTruet    acceptingR;tlisten(R    tconnectionQueueSize((s.\\AsyncoreServer.pyRX•s    icCs‰t|_tjr"|jjƒn|jtjtj    ƒd|f}t
j d|j |fƒ|j |ƒt
j dƒ|j|ƒdS(Nts%s starting at port = %s...sbind ok!start listenning...(RVR R R RRt create_socketR;tAF_INETt SOCK_STREAMRRRtbindRX(R    tportRYtbindAddr((s.\\AsyncoreServer.pyR›s           cCsp|js dStjdƒt|_tjr_|jjdƒx |jjƒr[t    dƒq?WntjdƒdS(NsStoping server...igš™™™™™¹?sStop server OK!(
R RRRR R RtjointisAliveR(R    ((s.\\AsyncoreServer.pytstop©s             (RRRR#R)R,R.R1R2R6R9RFRGRBR RXRRc(((s.\\AsyncoreServer.pyR%s                                                       cCs9tjƒr5ddl}tjd|j|ƒƒndS(Niÿÿÿÿsbuf = %s(RtIsDebugtbinasciiRRItb2a_hex(tbufRe((s.\\AsyncoreServer.pytOnGetMMORPGPacket´s  cCsÔyatjdtƒtdƒ}t|_|jƒx*tr_tj    dt
ddƒt dƒq6WWnlt jk
r—tjdƒtjtjƒƒn9tk
rÏ}tjt|ƒƒtjtjƒƒnXdS(Ns%s.logtDBServergð?igš™™™™™¹?s socket error!(Rt    InitMyLogRRRht    OnGetPackRRVRtloopRR5RR;R<R>R?t    ExceptionR=(tServerte((s.\\AsyncoreServer.pyttest¹s     
     t__main__(R;RRtCommonRR>ttimeRRt    threadingRtDBCommonRRKRt
__import__R RRRRhRpR(((s.\\AsyncoreServer.pyt<module>
s"       