bgddlZddlZddlZddlZdZejdjZejdjZejdj Z ejdj Z dZ dZ d dZGdd eZd ZdS) Niidc4t||||dz<dS)N)_pack_double_funcdataposvalues l/builddir/build/BUILD/cloudlinux-venv-1.0.7/venv/lib/python3.11/site-packages/prometheus_client/mmap_dict.py _pack_doubler s")%00DS1Wc4t||||dz<dS)N)_pack_integer_funcrs r _pack_integerrs"*511DS1Wrc#rK|dkrt|dd}d}||krt||d}||z|krtd|dz }||||z}|d|dzdzz z}||z }t||d}|d||fV|dz }||kdSdS)1Yield (key, value, pos). No locking is performed.rrz2Read beyond file size detected, file is corrupted.rutf-8N)_unpack_integer RuntimeError_unpack_doubledecode)r usedr encoded_len encoded_key padded_lenr s r _read_all_valuesrs qyytQ''* C **%dC003  t # #STT T q3{!223  AqA(=$=>  ztS))!,  ))5#5555 q ******rcTeZdZdZd dZedZdZdZdZ dZ d Z d Z d S) MmapedDictaA dict of doubles, backed by an mmapped file. The file starts with a 4 byte int, indicating how much of it is used. Then 4 bytes of padding. There's then a number of entries, consisting of a 4 byte int which is the size of the next field, a utf-8 encoded string key, padding to a 8 byte alignment, and then a 8 byte float which is the value. Not thread safe. Fct||rdnd|_||_tj|jj}|dkr&|jtt}||_ tj |j|j |r tj n tj |_ i|_t|j dd|_|jdkr$d|_t#|j d|jdS|s%|D]\}}}||j|<dSdS)Nrbza+br)accessr)open_f_fnameosfstatfilenost_sizetruncate_INITIAL_MMAP_SIZE _capacitymmap ACCESS_READ ACCESS_WRITE_m _positionsr_usedrr)selffilename read_modecapacitykey_r s r __init__zMmapedDict.__init__<sHx!=>> 8DGNN,,--5 q== G  / 0 0 0)H!)DGNN,,dn7@#W4#3#3dFWYYY$TWa003 :??DJ $'1dj 1 1 1 1 1 /#'#8#8#:#://KCC+.DOC(( / ///rcRt|d5}|tj}t |dd}|t |kr(|||t |z z }dddn #1swxYwYt ||S)Nr"r)r$readr.PAGESIZErlenr)r5infpr rs r read_all_values_from_filez$MmapedDict.read_all_values_from_fileQs (D ! ! 4T99T]++D"4++A.Dc$ii $T"2333  4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 d+++sA1BBBcB|d}|ddt|dzdzz zz}tjdt|t||d}|jt|z|jkr|xjdzc_|j|jtj |j |j|_ |jt|z|jk||j |j|jt|z<|xjt|z c_t|j d|j|jdz |j |<d S) z0Initialize a value. Lock must be held by caller.r rrzi{0}sdgrN)encoder>structpackformatr3r-r%r+r.r)r1rr2)r4r8encodedpaddedr s r _init_valuezMmapedDict._init_value\sY**W%%DAW)9Q(>$>?@ HOOCKK88??AA3w<>>>rc#LK|D] \}}}||fV dS)z,Yield (key, value). No locking is performed.N)r)r4kvr9s r read_all_valueszMmapedDict.read_all_valuesqs@,,..  GAq!Q$JJJJ  rc||jvr|||j|}t|j|dS)Nr)r2rJrr1)r4r8r s r read_valuezMmapedDict.read_valuevsF do % %   S ! ! !oc"dgs++A..rc||jvr|||j|}t|j||dSN)r2rJr r1)r4r8r r s r write_valuezMmapedDict.write_value}sI do % %   S ! ! !oc"TWc5)))))rc|jrB|jd|_|jd|_dSdSrT)r%r1closerLs r rWzMmapedDict.closesF 7  GMMOOODG GMMOOODGGG   rN)F) __name__ __module__ __qualname____doc__r: staticmethodr@rJrrPrRrUrWrr r r 0s  ////*,,\,..."??? ///***rr cntt||}tj|||gdS)z&Format a key for use in the mmap file.T) sort_keys)dictzipjsondumps) metric_namename labelnames labelvalueslabelss r mmap_keyris7#j+.. / /F :{D&1T B B BBr)r)rbr.r'rEr,StructrFrr unpack_fromrrr rrobjectr rir]rr rms "V]4((-!FM$'',&-%%1t$$0111222.YYYYYYYYxCCCCCr