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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
±ýîic@s¾dZddlZddlZddlZddlZddlmZmZddlmZddl    m
Z
edddgƒZ d    dd
„ƒYZ d dd „ƒYZ d dd„ƒYZdS(s-
Îļþ¹ÜÀíÄ£¿é
¸ºÔðÈÕÖ¾ÎļþµÄ´´½¨¡¢Ð´ÈëºÍ¹ÜÀí
iÿÿÿÿN(t
namedtuplet OrderedDict(t packet_logger(t
ClientsMgrtFileInfot    server_idt
event_typetFileWriteStatscBsDeZdZd„Zd„Zd„Zd„Zd„Zd„ZRS(s ÎļþдÈëͳ¼ÆcCs%tjƒ|_d|_d|_dS(Ni(t    threadingtLocktlockt success_countt
fail_count(tself((s.\file_manager.pyt__init__s    cCs#|j|jd7_WdQXdS(Ni(R
R (R ((s.\file_manager.pyt add_successs
cCs#|j|jd7_WdQXdS(Ni(R
R (R ((s.\file_manager.pytadd_fail!s
cCs|j |jSWdQXdS(N(R
R (R ((s.\file_manager.pytget_success_count%s
cCs|j |jSWdQXdS(N(R
R (R ((s.\file_manager.pytget_fail_count)s
cCs&|jd|_d|_WdQXdS(Ni(R
R R (R ((s.\file_manager.pytreset-s
    (    t__name__t
__module__t__doc__RRRRRR(((s.\file_manager.pyRs                    t    WriteFilecBs;eZdZd„Zd„Zd„Zd„Zd„ZRS(sµ¥¸öÎļþдÈëÆ÷cCsJ||_d|_t|_||_||_tjƒ|_|j    ƒdS(N(
tfilenametNonet file_handletFalsetis_readytsuccess_callbackt fail_callbackttimet last_accesst    open_file(R RRR((s.\file_manager.pyR6s                    cCs›y`tjj|jƒ}|rAtjj|ƒ rAtj|ƒnt|jdƒ|_t|_    Wn4t
k
r–}t |_    d|jt |ƒfGHnXdS(s´ò¿ªÎļþtabs.[WriteFile] Failed to open file: %s, error: %sN( tostpathtdirnameRtexiststmakedirstopenRtTrueRt    ExceptionRtstr(R tdir_pathte((s.\file_manager.pyR!?s     cCsÒ|js#|jr|jƒntSy]|djdƒ}|jj|ƒ|jjƒ|jrl|jƒntjƒ|_    t
SWnKt k
rÍ}d|j t |ƒfGHt|_|jrÉ|jƒntSXdS(sдÈë×Ö·û´®Êý¾Ýs
tgbks*[WriteFile] Failed to write: %s, error: %sN(RRRtencodeRtwritetflushRRR R)R*RR+(R tdatatlineR-((s.\file_manager.pyt write_stringNs$                        cCs=|jr9y|jjƒWnnXd|_t|_ndS(s¹Ø±ÕÎļþN(RtcloseRRR(R ((s.\file_manager.pyR5fs        cCs|jƒdS(N(R5(R ((s.\file_manager.pyt__del__ps(RRRRR!R4R5R6(((s.\file_manager.pyR3s                     
tFileMgrcBsqeZdZd„Zd„Zd„Zd„Zd„Zd„Zd„Z    d„Z
d    „Z d
„Z d „Z RS( s
Îļþ¹ÜÀíÆ÷cCsÄ||_tjƒ|_tƒ|_tƒ|_|jjƒ|_    |jj
ƒ|_ |jj ƒ|_ tjj|j    ƒsÀytj|j    ƒWqÀtk
r¼}d|j    t|ƒfGHqÀXndS(Ns1[FileMgr] Failed to create log dir: %s, error: %s(tconfigRR    R
Rtfile_mapRtstatstget_log_file_pathtlog_pathtget_max_open_filestmax_open_filestget_idle_timeoutt idle_timeoutR#R$R&R'R*R+(R R8R-((s.\file_manager.pyRws      cCsˆtjƒ}g}xC|jjƒD]2\}}||j|jkr"|j|ƒq"q"Wx)|D]!}|j|jƒ|j|=q_WdS(s ¹Ø±Õ³¬¹ý¿ÕÏÐʱ¼äµÄÎļþ£¬Êͷžä±úN(RR9titemsR R@tappendR5(R tnowt    to_removet    file_infot
write_file((s.\file_manager.pyt_cleanup_idle_filesŠs  cCshxat|jƒ|jkrc|jjdtƒ\}}|jƒtjd|j|jfdƒqWdS(ss
        È·±£´ò¿ªµÄÎļþÊý²»³¬¹ý×î´óÏÞÖÆ¡£
        Èç¹ûµ½´ïÉÏÏÞ£¬¹Ø±Õ×î¾ÃδʹÓõÄÎļþ£¨OrderedDict Ê×룩¡£
        tlastsBFileMgr: Reached max open files limit (%d), closed oldest file: %stWARNN(    tlenR9R>tpopitemRR5Rtlog_textR(R t oldest_infot oldest_writer((s.\file_manager.pyt_enforce_max_open_limit–s 
cCstjƒ}|j|ƒ}|dkr>tjd|dƒnt||ƒ}|j¥|jƒ||jkrŠ|j    ƒ|j
|ƒnb|j|}|j ||ƒsÍ|j ƒ|j|=|j
|ƒn|jj |ƒ}||j|<|j|SWdQXdS(s»ñÈ¡ÎļþдÈëʵÀýis@FileMgr: WARNING - cid=%d has no server_id set! Defaulting to S0RIN(Rtinstancetget_client_server_idRRLRR
RGR9ROt_create_file_writert_check_file_validR5tpop(R tcidRt clients_mgrRRERFtvalue((s.\file_manager.pyt get_instance£s$  
 
 
 
 
 c    Cs|jjƒ}d|j}tjj|j|ƒ}tjjƒj    dƒ}tjj||ƒ}|dkrƒd|j
|f}n|dkr½tjjƒj    dƒ}d|j
|f}nG|dkr÷tjjƒj    dƒ}d|j
|f}n d    |j
}tjj||ƒS(
s »ñÈ¡Îļþ·¾¶sS%ds%Y-%m-%dis    %s_%s.txtis %Y-%m-%d_%His %Y%m%d_%H%M%Ss%s.txt( R8tget_write_modeRR#R$tjoinR<tdatetimeRCtstrftimeR(    R REt
write_modet server_foldert folder_pathtdate_strt date_folderRt date_time_str((s.\file_manager.pyt_get_file_pathÇs     cCs |js tS|jjƒ}tjjƒjdƒ}||jkrGtS|dkrœ|jjƒd}y)t    j
j |jƒ}||krŽtSWqœqœXnt S(s¼ì²éÎļþÊÇ·ñÓÐЧ(ÊÇ·ñÐèÒªÇл»)s%Y-%m-%dii( RRR8RYR[RCR\Rtget_max_file_sizeR#R$tgetsizeR)(R RFRER]t current_datetmax_sizet    file_size((s.\file_manager.pyRSàs      cCs>|j|ƒ}t||jj|jjƒ}||j|<dS(s´´½¨ÎļþдÈëÆ÷N(RcRR:RRR9(R REtfilepathRF((s.\file_manager.pyRR÷s     cCs|j||ƒ}|j|ƒS(s дÈëʼþÊý¾Ý(RXR4(R RURt
event_dataRF((s.\file_manager.pyt write_eventscCs |jjƒS(s»ñÈ¡³É¹¦Ð´Èë´ÎÊý(R:R(R ((s.\file_manager.pyRscCs |jjƒS(s»ñȡʧ°ÜдÈë´ÎÊý(R:R(R ((s.\file_manager.pyR
scCsE|j6x!|jjƒD]}|jƒqW|jjƒWdQXdS(s ¹Ø±ÕËùÓÐÎļþN(R
R9tvaluesR5tclear(R RF((s.\file_manager.pyt    close_alls
(RRRRRGRORXRcRSRRRkRRRn(((s.\file_manager.pyR7ts                  $            
            ((((RR#RR[Rt collectionsRRRtclients_managerRRRRR7(((s.\file_manager.pyt<module>s    A