hzr
2018-08-09 3346f8aae7f8abbd4b27c4564cbb802e7e717cc9
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
lÆ{Pc@sïddlZddlZddlZddlmZddlZddlmZddlZddl    m
Z
ddl m Z ddl Z edƒZde
fd„ƒYZd    ejfd
„ƒYZd „Zd „Zed krëeƒndS(iÿÿÿÿN(tmylog(tsleep(tThread(tSingletonObjectsConfig.DBConfigtSendPackDispatchThreadcBs#eZd„Zd„Zd„ZRS(cCs tj|ddƒ||_dS(NtnameR(Rt__init__t'_SendPackDispatchThread__asyncoreServer(tselftasyncoreServer((s7.\server\db\PyMongoDataServer\NetCore\AsyncoreServer.pyRscCs4|jjƒtjr0tjd|jƒƒndS(Nsend of thread %s!(RtprocessSendQueuetDBConfigtMultiThreadingRtinfotgetName(R((s7.\server\db\PyMongoDataServer\NetCore\AsyncoreServer.pytruns     cCs1tj|ƒtjd|jƒ|jfƒdS(NsThread %s(%s) start!(RtstartRR Rtident(R((s7.\server\db\PyMongoDataServer\NetCore\AsyncoreServer.pyR s (t__name__t
__module__RRR(((s7.\server\db\PyMongoDataServer\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ÿÿÿÿcCsktjj|ƒt|ƒ|_||_tjƒ|_t    j    ƒ|_
t    j    ƒ|_ t |_ ||_dS(N(tasyncoret
dispatcherRRt'_AsynCoreServer__sendPackDispatchThreadRtAsynServerClienttAsynServerClientMgrt    clientMgrtQueuet_AsynCoreServer__recvQueuet    sendQueuetFalset_AsynCoreServer__activet MaxClientCnt(RRR ((s7.\server\db\PyMongoDataServer\NetCore\AsyncoreServer.pyR&s        cCs |jjƒS(N(Rt getClientCnt(R((s7.\server\db\PyMongoDataServer\NetCore\AsyncoreServer.pyt GetClientCnt3scCstjdƒdS(s×ÓÀàʵÏÖs
unhandled!N(Rtwarning(RtsocktaddrtonClientDisconnectt    recvQueue((s7.\server\db\PyMongoDataServer\NetCore\AsyncoreServer.pytonAcceptClient6scCs|jj|ƒS(N(Rt    getClient(Rt    sessionID((s7.\server\db\PyMongoDataServer\NetCore\AsyncoreServer.pytFindClientBySessionID>scCs |jjƒS(N(Rtqsize(R((s7.\server\db\PyMongoDataServer\NetCore\AsyncoreServer.pyt sendQueueSizeAscCs|jj|ƒdS(N(Rtput(Rtpack((s7.\server\db\PyMongoDataServer\NetCore\AsyncoreServer.pytpushSendDscCs |jjƒS(s#recv queue item cnt,but no reliable(RR,(R((s7.\server\db\PyMongoDataServer\NetCore\AsyncoreServer.pyt recvQueueCntKscCs/y|jjƒ}Wntjk
r*dSX|S(N(Rt
get_nowaitRtEmptytNone(RR/((s7.\server\db\PyMongoDataServer\NetCore\AsyncoreServer.pytrecvQueuePopNoWaitOs
cCs|jjƒ}|S(N(Rtget(RtrecvPack((s7.\server\db\PyMongoDataServer\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_excR R"tfilenotcloseR R(t#_AsynCoreServer__onClientDisconnectRRt    addClient(RR$R%twhytclient((s7.\server\db\PyMongoDataServer\NetCore\AsyncoreServer.pyt handle_accept\s$#
cCstjd|jƒdS(Ns    %s close!(RR R(R((s7.\server\db\PyMongoDataServer\NetCore\AsyncoreServer.pyt handle_closenscCsJ|jj|ƒsFtjd|jjtjƒdd|jfƒndS(Ns&%s.%s del client failed!sessionID = %sii(    Rt    delClientRtdebugt    __class__RtinspecttstackR*(RRD((s7.\server\db\PyMongoDataServer\NetCore\AsyncoreServer.pyt__onClientDisconnectqs#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(RRR2RR3R4R R Rt getSessionIDRt getClientListRRHt outputStringR0t getPackDataR)RIRRJRKRt getPackPooltfree(RR/t
clientListRDt serverClient((s7.\server\db\PyMongoDataServer\NetCore\AsyncoreServer.pyR
vs. 
     
  #cCs*tjd|ƒt|_|jj|ƒS(s?¸²¸Ç¸¸ÀàµÄͬÃû·½·¨£¬¸¸ÀàÔÚNTϵͳÏ£¬ÏÞÖÆÁËÁ¬½Ó¶ÓÁеÄ×î´óÊýÁ¿Îª5sServer start with backlog = %s(RRHtTruet    acceptingR:tlisten(RtconnectionQueueSize((s7.\server\db\PyMongoDataServer\NetCore\AsyncoreServer.pyRW”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...(RURR R RRt create_socketR:tAF_INETt SOCK_STREAMRR RtbindRW(RtportRXtbindAddr((s7.\server\db\PyMongoDataServer\NetCore\AsyncoreServer.pyRšs           cCsp|js dStjdƒt|_tjr_|jjdƒx |jjƒr[t    dƒq?WntjdƒdS(NsStoping server...igš™™™™™¹?sStop server OK!(
RRR RR R RtjointisAliveR(R((s7.\server\db\PyMongoDataServer\NetCore\AsyncoreServer.pytstop¨s             (RRRR"R(R+R-R0R1R5R8RERFRAR
RWRRb(((s7.\server\db\PyMongoDataServer\NetCore\AsyncoreServer.pyR$s                                                       cCs*ddl}tjd|j|ƒƒdS(Niÿÿÿÿsbuf = %s(tbinasciiRRHtb2a_hex(tbufRc((s7.\server\db\PyMongoDataServer\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    InitMyLogRRRft    OnGetPackRRURtloopRR4RR:R;R=R>t    ExceptionR<(tServerte((s7.\server\db\PyMongoDataServer\NetCore\AsyncoreServer.pyttest·s     
     t__main__(R:RRtCommonRR=ttimeRRt    threadingRtDBCommonRRJt
__import__R RRRRfRnR(((s7.\server\db\PyMongoDataServer\NetCore\AsyncoreServer.pyt<module>
s        