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
IxÙfc@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[.\db»º´æ³Ø\TCode\TeamServer\Server4\Servers\PyMongoDataServer\src\NetCore\AsyncoreServer.pyRscCs4|jjƒtjr0tjd|jƒƒndS(Nsend of thread %s!(RtprocessSendQueuetDBConfigtMultiThreadingRtinfotgetName(R    ((s[.\db»º´æ³Ø\TCode\TeamServer\Server4\Servers\PyMongoDataServer\src\NetCore\AsyncoreServer.pytruns     cCs1tj|ƒtjd|jƒ|jfƒdS(NsThread %s(%s) start!(RtstartRRRtident(R    ((s[.\db»º´æ³Ø\TCode\TeamServer\Server4\Servers\PyMongoDataServer\src\NetCore\AsyncoreServer.pyR!s (t__name__t
__module__RRR(((s[.\db»º´æ³Ø\TCode\TeamServer\Server4\Servers\PyMongoDataServer\src\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[.\db»º´æ³Ø\TCode\TeamServer\Server4\Servers\PyMongoDataServer\src\NetCore\AsyncoreServer.pyR's            cCs |jjƒS(N(Rt getClientCnt(R    ((s[.\db»º´æ³Ø\TCode\TeamServer\Server4\Servers\PyMongoDataServer\src\NetCore\AsyncoreServer.pyt GetClientCnt5scCstjdƒdS(s×ÓÀàʵÏÖs
unhandled!N(Rtwarning(R    tsocktaddrtonClientDisconnectt    recvQueue((s[.\db»º´æ³Ø\TCode\TeamServer\Server4\Servers\PyMongoDataServer\src\NetCore\AsyncoreServer.pytonAcceptClient8scCs|jj|ƒS(N(Rt    getClient(R    t    sessionID((s[.\db»º´æ³Ø\TCode\TeamServer\Server4\Servers\PyMongoDataServer\src\NetCore\AsyncoreServer.pytFindClientBySessionID@scCs |jjƒS(N(Rtqsize(R    ((s[.\db»º´æ³Ø\TCode\TeamServer\Server4\Servers\PyMongoDataServer\src\NetCore\AsyncoreServer.pyt sendQueueSizeCscCs|jj|ƒdS(N(Rtput(R    tpack((s[.\db»º´æ³Ø\TCode\TeamServer\Server4\Servers\PyMongoDataServer\src\NetCore\AsyncoreServer.pytpushSendFscCs |jjƒS(s#recv queue item cnt,but no reliable(RR/(R    ((s[.\db»º´æ³Ø\TCode\TeamServer\Server4\Servers\PyMongoDataServer\src\NetCore\AsyncoreServer.pyt recvQueueCntMscCs/y|jjƒ}Wntjk
r*dSX|S(N(Rt
get_nowaitRtEmptyR"(R    R2((s[.\db»º´æ³Ø\TCode\TeamServer\Server4\Servers\PyMongoDataServer\src\NetCore\AsyncoreServer.pytrecvQueuePopNoWaitQs
cCs|jjƒ}|S(N(Rtget(R    trecvPack((s[.\db»º´æ³Ø\TCode\TeamServer\Server4\Servers\PyMongoDataServer\src\NetCore\AsyncoreServer.pyt recvQueuePopYscCsú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[.\db»º´æ³Ø\TCode\TeamServer\Server4\Servers\PyMongoDataServer\src\NetCore\AsyncoreServer.pyt handle_accept^s$#
cCstjd|jƒdS(Ns    %s close!(RRR(R    ((s[.\db»º´æ³Ø\TCode\TeamServer\Server4\Servers\PyMongoDataServer\src\NetCore\AsyncoreServer.pyt handle_closepscCsf|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    RF((s[.\db»º´æ³Ø\TCode\TeamServer\Server4\Servers\PyMongoDataServer\src\NetCore\AsyncoreServer.pyt__onClientDisconnectss
#    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 RR5RR6R"R R Rt getSessionIDRt getClientListRRJt outputStringR3t getPackDataR,RKRRLRMRt getPackPooltfree(R    R2t
clientListRFt serverClient((s[.\db»º´æ³Ø\TCode\TeamServer\Server4\Servers\PyMongoDataServer\src\NetCore\AsyncoreServer.pyR zs. 
     
  #cCs*tjd|ƒt|_|jj|ƒS(s?¸²¸Ç¸¸ÀàµÄͬÃû·½·¨£¬¸¸ÀàÔÚNTϵͳÏ£¬ÏÞÖÆÁËÁ¬½Ó¶ÓÁеÄ×î´óÊýÁ¿Îª5sServer start with backlog = %s(RRJtTruet    acceptingR<tlisten(R    tconnectionQueueSize((s[.\db»º´æ³Ø\TCode\TeamServer\Server4\Servers\PyMongoDataServer\src\NetCore\AsyncoreServer.pyRY˜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...(RWR R R RRt create_socketR<tAF_INETt SOCK_STREAMRRRtbindRY(R    tportRZtbindAddr((s[.\db»º´æ³Ø\TCode\TeamServer\Server4\Servers\PyMongoDataServer\src\NetCore\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[.\db»º´æ³Ø\TCode\TeamServer\Server4\Servers\PyMongoDataServer\src\NetCore\AsyncoreServer.pytstop¬s             (RRRR%R+R.R0R3R4R7R:RGRHRCR RYRRd(((s[.\db»º´æ³Ø\TCode\TeamServer\Server4\Servers\PyMongoDataServer\src\NetCore\AsyncoreServer.pyR%s                                                       cCs9tjƒr5ddl}tjd|j|ƒƒndS(Niÿÿÿÿsbuf = %s(RtIsDebugtbinasciiRRJtb2a_hex(tbufRf((s[.\db»º´æ³Ø\TCode\TeamServer\Server4\Servers\PyMongoDataServer\src\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    InitMyLogRRRit    OnGetPackRRWRtloopRR"RR<R=R?R@t    ExceptionR>(tServerte((s[.\db»º´æ³Ø\TCode\TeamServer\Server4\Servers\PyMongoDataServer\src\NetCore\AsyncoreServer.pyttest¼s     
     t__main__(R<RRtCommonRR?ttimeRRt    threadingRtDBCommonRRLRt
__import__R RRRRiRqR(((s[.\db»º´æ³Ø\TCode\TeamServer\Server4\Servers\PyMongoDataServer\src\NetCore\AsyncoreServer.pyt<module>
s"       ’