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
P.hc@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).\\ServersRoute\NetCore\AsyncoreServer.pyRscCs|jjƒdS(N(RtprocessSendQueue(R    ((s).\\ServersRoute\NetCore\AsyncoreServer.pytrunscCs1tj|ƒtjd|jƒ|jfƒdS(NsThread %s(%s) start!(RtstartRtinfotgetNametident(R    ((s).\\ServersRoute\NetCore\AsyncoreServer.pyR s (t__name__t
__module__RR R (((s).\\ServersRoute\NetCore\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ÿÿÿÿcCsttjj|ƒt|ƒ|_||_tjƒ|_t    j    ƒ|_
t    j    ƒ|_ t |_ ||_d|_dS(N(tasyncoret
dispatcherRRt'_AsynCoreServer__sendPackDispatchThreadRtAsynServerClienttAsynServerClientMgrt    clientMgrtQueuet_AsynCoreServer__recvQueuet    sendQueuetFalset_AsynCoreServer__activet MaxClientCnttNonetonClientDisconnectEx(R    RR((s).\\ServersRoute\NetCore\AsyncoreServer.pyR%s            cCs |jjƒS(N(Rt getClientCnt(R    ((s).\\ServersRoute\NetCore\AsyncoreServer.pyt GetClientCnt3scCstjdƒdS(s×ÓÀàʵÏÖs
unhandled!N(Rtwarning(R    tsocktaddrtonClientDisconnectt    recvQueue((s).\\ServersRoute\NetCore\AsyncoreServer.pytonAcceptClient6scCs|jj|ƒS(N(Rt    getClient(R    t    sessionID((s).\\ServersRoute\NetCore\AsyncoreServer.pytFindClientBySessionID>scCs |jjƒS(N(Rtqsize(R    ((s).\\ServersRoute\NetCore\AsyncoreServer.pyt sendQueueSizeAscCs|jj|ƒdS(N(Rtput(R    tpack((s).\\ServersRoute\NetCore\AsyncoreServer.pytpushSendDscCs |jjƒS(s#recv queue item cnt,but no reliable(RR-(R    ((s).\\ServersRoute\NetCore\AsyncoreServer.pyt recvQueueCntKscCs/y|jjƒ}Wntjk
r*dSX|S(N(Rt
get_nowaitRtEmptyR (R    R0((s).\\ServersRoute\NetCore\AsyncoreServer.pytrecvQueuePopNoWaitOs
cCs|jjƒ}|S(N(Rtget(R    trecvPack((s).\\ServersRoute\NetCore\AsyncoreServer.pyt recvQueuePopWscCsú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_excRR#tfilenotcloseRR)t#_AsynCoreServer__onClientDisconnectRRt    addClient(R    R%R&twhytclient((s).\\ServersRoute\NetCore\AsyncoreServer.pyt handle_accept\s$#
cCstjd|jƒdS(Ns    %s close!(RRR(R    ((s).\\ServersRoute\NetCore\AsyncoreServer.pyt handle_closenscCsf|jj|ƒsFtjd|jjtjƒdd|jfƒn|j    rb|j    |jƒndS(Ns&%s.%s del client failed!sessionID = %sii(
Rt    delClientRtdebugt    __class__RtinspecttstackR+R!(R    RD((s).\\ServersRoute\NetCore\AsyncoreServer.pyt__onClientDisconnectqs
#    cCs?x8|jr:y|jjƒ}Wntjk
r;d}nX|dkrLPn|jƒdkrª|jjƒ}x4|D],}t    j
|j ƒƒ|j |j ƒƒqtWqn|jj|jƒƒ}|dkrt    j
d|jjtjƒdd|jƒ|j ƒfƒqn|j |j ƒƒtjƒj|ƒqWdS(Nis#%s.%s sessionID = %s ignore pack %si(RRR3RR4R t getSessionIDRt getClientListRRHt outputStringR1t getPackDataR*RIRRJRKRt getPackPooltfree(R    R0t
clientListRDt serverClient((s).\\ServersRoute\NetCore\AsyncoreServer.pyR xs( 
   #cCs*tjd|ƒt|_|jj|ƒS(s?¸²¸Ç¸¸ÀàµÄͬÃû·½·¨£¬¸¸ÀàÔÚNTϵͳÏ£¬ÏÞÖÆÁËÁ¬½Ó¶ÓÁеÄ×î´óÊýÁ¿Îª5sServer start with backlog = %s(RRHtTruet    acceptingR:tlisten(R    tconnectionQueueSize((s).\\ServersRoute\NetCore\AsyncoreServer.pyRW“s    icCspt|_|jtjtjƒd|f}tjd|j|fƒ|j    |ƒtjdƒ|j
|ƒdS(Nts%s starting at port = %s...sbind ok!start listenning...( RURt create_socketR:tAF_INETt SOCK_STREAMRRRtbindRW(R    tportRXtbindAddr((s).\\ServersRoute\NetCore\AsyncoreServer.pyR ™s       cCs4|js dStjdƒt|_tjdƒdS(NsStoping server...sStop server OK!(RRRR(R    ((s).\\ServersRoute\NetCore\AsyncoreServer.pytstop¥s
         (RRRR#R)R,R.R1R2R5R8RERFRAR RWR R`(((s).\\ServersRoute\NetCore\AsyncoreServer.pyR#s                                                       cCs9tjƒr5ddl}tjd|j|ƒƒndS(Niÿÿÿÿsbuf = %s(RtIsDebugtbinasciiRRHtb2a_hex(tbufRb((s).\\ServersRoute\NetCore\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    InitMyLogRRRet    OnGetPackR RURtloopRR RR:R;R=R>t    ExceptionR<(tServerte((s).\\ServersRoute\NetCore\AsyncoreServer.pyttest²s     
     t__main__(R:RRtCommonRR=ttimeRRt    threadingRtDBCommonRRJRt
__import__tDBConfigRRRReRmR(((s).\\ServersRoute\NetCore\AsyncoreServer.pyt<module>
s"        Š