fj `UddlZddlZddlZddlZddlmZddlmZddlm Z m Z ddl m Z m Z ejeZeGddZeZe eefed<ejZedd ed e eddffd Zd ZdZddZdZd edefdZd efdZdS)N)contextmanager) dataclass)Dict Generator)request_data_storagesafe_id_patterncHeZdZUdZejed<eed<edZ dS)TaskCounterStoragezH Typing that has lock and value storage with some syntax sugar. locknext_request_idc|jdz S)N)r )selfs S/opt/cloudlinux/venv/lib64/python3.11/site-packages/xray/internal/local_counters.pyprocessed_requestsz%TaskCounterStorage.processed_requestss#a''N) __name__ __module__ __qualname____doc__ threadingLock__annotations__intpropertyrrrr r sU . ((X(((rr _request_id_storageF fake_task_idreturnc#Ktd|t|}|j5|V|r+td|t ||ddddS#1swxYwYdS)z Open local task information storage. @param fake_task_id: unique string, usually obtained as task.fake_id @param flush: whether to save data to file right after update zOpening storage %sz)Updating task %s requests counter in fileN)loggerdebug_get_or_create_recordr info_save_data_to_file)rflushstorages ropen_local_storager(%s LL%|444#L11G 66  6 KKC\ R R R |W 5 5 5 666666666666666666s2A33A7:A7ctd|t5|tvrt|=ddddS#1swxYwYdS)zw Remove local storage record. @param fake_task_id: unique string, usually obtained as task.fake_id z#Removing memory storage for task %sN)r!r$_global_storage_lockr)rs rremove_local_storager+8s  KK5|DDD 22 . . .#L1222222222222222222sAA Ac*ttS)8 List all fake task ids saved in local storage. )listrrrr get_task_idsr/Ds # $ $$rTcttD]^}td|t |5}t |||rt|=dddn #1swxYwY_dS)r-zFlushing task id %s on diskN)r.rkeysr!r$r(r%)removerr's rflush_memory_storager3Ks055778866  1<@@@  - - 6 |W 5 5 5 6' 5 6 6 6 6 6 6 6 6 6 6 6 6 6 6 666sA::A> A> cHtj||tjzdS)Ni)osopen O_NOFOLLOW)pathflagss r_nofollow_openerr:Ws 74. 6 66rr'c|rtj|std|tjt |} t|dt5}| t|j ddddS#1swxYwYdS#t$r<}|j tjkr!td|Yd}~dSd}~wwxYw)z1 Saves storage data from memory to file. zInvalid task_id format: wopenerNRefusing to follow symlink: %s)rmatch ValueErrorr5r8joinrr6r:writestrr OSErrorerrnoELOOPr!warningrr' req_id_filefes rr%r%[s9 D4\BBDBLBBCCC',,3\BBK +s+; < < < 2 GGC/00 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2  7ek ! ! NN;[ I I I FFFFF sBB(&(B B(BB("B#B(( C.20C)(C))C.ct5|tvr-ttjdt|<t|}t jt|} t|dt5}t| |_ dddn #1swxYwYn#t$rYn{t$rt d|YnUt$$r<}|jt&jkrt d|nYd}~nd}~wwxYwt|}dddn #1swxYwY|S)zO Takes record from local storage or creates new one and returns object r)r r rr=Nz8Corrupted counter file for task %s, resetting to defaultr?)r*rr rrr5r8rBrr6r:rreadr FileNotFoundErrorrAr!rHrErFrGrIs rr#r#ls 88 2 2 20B^%% !111  - *,7G',,';\JJK +s3CDDD<.1!&&((mmG+<<<<<<<<<<<<<<<$    E E E 67CEEEEE   7ek))NN#C#.000000000 *,7G38888888888888884 NsxA'E0C'B:. C:B> >CB> CE D=E$D=6E8 D=2D83E8D==EE E)F)T)rFloggingr5r contextlibr dataclassesrtypingrrxray.internal.constantsrr getLoggerrr!r dictrrDrrr*r(r+r/r3r:r%r#rrrrXs  %%%%%%!!!!!!""""""""IIIIIIII  8 $ $  ( ( ( ( ( ( (  (6:TVVT#112;;;%y~''66S6)DVX\^bDb:c6666$ 2 2 2%%% 6 6 6 6777S3E"+=r