Viewing File: /opt/hc_python/lib/python3.12/site-packages/prometheus_client/__pycache__/mmap_dict.cpython-312.pyc

�

_��g��h�ddlZddlZddlZddlZddlmZdZejd�jZ	ejd�jZ
ejd�jZejd�jZ
d�Zd�Zdd�ZGd	�d
�Zdeded
eedeededefd�Zy)�N)�Listi�isddc�(�t||�|||dzy)N�)�_pack_two_doubles_func)�data�pos�value�	timestamps    �J/opt/hc_python/lib/python3.12/site-packages/prometheus_client/mmap_dict.py�_pack_two_doublesr
s��/��y�A�D��S�2�X��c�&�t|�|||dzy)N�)�_pack_integer_func)rr	r
s   r�
_pack_integerrs��*�5�1�D��S�1�W�rc#�*K�|dkrt|d�d}d}||krtt||�d}||z|kDrtd��|dz
}||||z}|d|dzdzz
z}||z
}t||�\}}|jd�|||f��|dz
}||kr�syy�w)z<Yield (key, value, timestamp, pos). No locking is performed.r�z2Read beyond file size detected, file is corrupted.r�utf-8rN)�_unpack_integer�RuntimeError�_unpack_two_doubles�decode)r�usedr	�encoded_len�encoded_key�
padded_lenr
rs        r�_read_all_valuesrs������q�y��t�Q�'��*��
�C�

��*�%�d�C�0��3�����t�#��S�T�T��q����3�s�[�0�1�� �A��q��A�(=�$=�>�
��z���.�t�S�9���y�� � ��)�5�)�S�@�@��r�	����*�s�BB�Bc�L�eZdZdZdd�Zed��Zd�Zd�Zd�Z	d�Z
d�Zd	�Zy
)�
MmapedDicta�A 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 and a 8 byte float
    which is a UNIX timestamp in seconds.

    Not thread safe.
    c���t||rdnd�|_||_tj|jj��j}|dk(r%|jjt�t}||_	tj|jj�|j|rtjntj��|_
i|_t|jd�d|_|j dk(r)d|_t#|jd|j �y|s*|j%�D]\}}}}||j|<�yy)N�rbza+br)�accessr)�open�_f�_fname�os�fstat�fileno�st_size�truncate�_INITIAL_MMAP_SIZE�	_capacity�mmap�ACCESS_READ�ACCESS_WRITE�_m�
_positionsr�_usedrr)�self�filename�	read_mode�capacity�key�_r	s       r�__init__zMmapedDict.__init__?s���x����>�������8�8�D�G�G�N�N�,�-�5�5���q�=��G�G���/�0�)�H�!����)�)�D�G�G�N�N�,�d�n�n�7@�4�#3�#3�d�FW�FW�Y������$�T�W�W�a�0��3��
��:�:��?��D�J��$�'�'�1�d�j�j�1��&*�&;�&;�&=�N�C��A�s�+.�D�O�O�C�(�'>�rc��t|d�5}|jtj�}t	|d�d}|t|�kDr ||j|t|�z
�z
}ddd�t
�S#1swY�xYw)Nr"r)r$�readr.�PAGESIZEr�lenr)r5�infprrs    r�read_all_values_from_filez$MmapedDict.read_all_values_from_fileTsx��
�(�D�
!�T��9�9�T�]�]�+�D�"�4��+�A�.�D��c�$�i����	�	�$��T��"2�3�3��
"� ��d�+�+�"�
!�s�AA>�>Bc�l�|jd�}|ddt|�dzdzz
zz}tjdt|��d�j�t|�|dd�}|jt|�z|j
kDr�|xj
dzc_|jj|j
�tj|jj�|j
�|_
|jt|�z|j
kDr��||j|j|jt|�z|xjt|�z
c_t|jd	|j�|jd
z
|j|<y)z0Initialize a value. Lock must be held by caller.r� rr�i�sddg�rrN)
�encoder>�struct�packr3r-r%r+r.r)r1rr2)r4r8�encoded�paddedr
s     r�_init_valuezMmapedDict._init_value_s>���*�*�W�%���D�A��W���)9�Q�(>�$>�?�@�����a��F��}�C�0�7�7�9�3�w�<��QT�VY�Z���j�j�3�u�:�%����6��N�N�a��N��G�G���T�^�^�,��i�i������ 0�$�.�.�A�D�G��j�j�3�u�:�%����6�7<�����
�
�4�:�:��E�
�2�3�	
�
�
�c�%�j� �
��d�g�g�q�$�*�*�-�#�z�z�B������rc�D�t|j|j��S)z1Yield (key, value, pos). No locking is performed.)rr)rr1r3�r4s rrzMmapedDict._read_all_valuesps���T�W�W�4�:�:�>�>rc#�NK�|j�D]\}}}}|||f���y�w)z7Yield (key, value, timestamp). No locking is performed.N)r)r4�k�v�tsr9s     r�read_all_valueszMmapedDict.read_all_valuests,�����0�0�2�K�A�q�"�a��Q��(�N�3�s�#%c��||jvr|j|�|j|}t|j|�S�N)r2rKrr1)r4r8r	s   r�
read_valuezMmapedDict.read_valueys;���d�o�o�%����S�!��o�o�c�"��"�4�7�7�C�0�0rc��||jvr|j|�|j|}t|j|||�yrT)r2rKr
r1)r4r8r
rr	s     r�write_valuezMmapedDict.write_values<���d�o�o�%����S�!��o�o�c�"���$�'�'�3��y�9rc��|jrC|jj�d|_|jj�d|_yyrT)r%r1�closerMs rrYzMmapedDict.close�s6���7�7��G�G�M�M�O��D�G��G�G�M�M�O��D�G�	rN)F)
�__name__�
__module__�__qualname__�__doc__r:�staticmethodr@rKrrRrUrWrY�rrr r 2s>��
�/�*�,��,�/�"?��
1�:�rr �metric_name�name�
labelnames�labelvalues�	help_text�returnc�b�tt||��}tj||||gd��S)z&Format a key for use in the mmap file.T)�	sort_keys)�dict�zip�json�dumps)r`rarbrcrd�labelss      r�mmap_keyrm�s/���#�j�+�.�
/�F��:�:�{�D�&�)�<��M�Mr)r)rjr.r'rG�typingrr,�StructrHrr�unpack_fromrrr
rrr �strrmr_rr�<module>rrs�����	�
����"�V�]�]�4�(�-�-��&����u�-�2�2���&�-�-��%�1�1��#�f�m�m�E�*�6�6��B�2��.X�X�vN�#�N�S�N�d�3�i�N�d�SV�i�N�dg�N�lo�Nr
Back to Directory File Manager