a
    Aù’iÆ  ã                   @  sL   d dl mZ d dlZG dd„ dƒZeƒ ZejZejZejZejZddgZ	dS )é    )ÚannotationsNc                   @  s`   e Zd ZdZddœdd„Zdddd	œd
d„Zdddddœdd„Zddœdd„Zddœdd„ZdS )Ú_HTTP2ProbeCache©Ú_lockÚ_cache_locksÚ_cache_valuesÚNone)Úreturnc                 C  s   t  ¡ | _i | _i | _d S ©N)Ú	threadingÚLockr   r   r   ©Úself© r   úP/home/httpd/docs/test/DocsMgr/lib/python3.9/site-packages/urllib3/http2/probe.pyÚ__init__   s    
z_HTTP2ProbeCache.__init__ÚstrÚintzbool | None)ÚhostÚportr	   c              
   C  sê   d }| j �n ||f}z*| j| }|d ur<|W W  d   ƒ S W n* tyh   t ¡ | j|< d | j|< Y n0 W d   ƒ n1 s~0    Y  | j| }| ¡  z| j| }W n< tyä } z$t|tƒrÆJ ‚| 	¡  ‚ W Y d }~n
d }~0 0 |S r
   )
r   r   ÚKeyErrorr   ÚRLockr   ÚacquireÚBaseExceptionÚ
isinstanceÚrelease)r   r   r   ÚvalueÚkeyÚkey_lockÚer   r   r   Úacquire_and_get   s&    
.
z _HTTP2ProbeCache.acquire_and_get)r   r   Úsupports_http2r	   c                 C  sj   ||f}| j | }|�. |d u r6| j| d ur6tdƒ‚W d   ƒ n1 sJ0    Y  || j|< | ¡  d S )Nz@Cannot reset HTTP/2 support for origin after value has been set.)r   r   Ú
ValueErrorr   )r   r   r   r!   r   r   r   r   r   Úset_and_release3   s    
ÿ"
z _HTTP2ProbeCache.set_and_releasez"dict[tuple[str, int], bool | None]c                 C  s>   | j �$ dd„ | j ¡ D ƒW  d  ƒ S 1 s00    Y  dS )zUThis function is for testing purposes only. Gets the current state of the probe cachec                 S  s   i | ]\}}||“qS r   r   )Ú.0ÚkÚvr   r   r   Ú
<dictcomp>D   ó    z,_HTTP2ProbeCache._values.<locals>.<dictcomp>N)r   r   Úitemsr   r   r   r   Ú_valuesA   s    z_HTTP2ProbeCache._valuesc                 C  s6   | j � i | _i | _W d  ƒ n1 s(0    Y  dS )zBThis function is for testing purposes only. Reset the cache valuesNr   r   r   r   r   Ú_resetF   s    z_HTTP2ProbeCache._resetN)	Ú__name__Ú
__module__Ú__qualname__Ú	__slots__r   r    r#   r*   r+   r   r   r   r   r      s   !r   r#   r    )
Ú
__future__r   r   r   Z_HTTP2_PROBE_CACHEr#   r    r*   r+   Ú__all__r   r   r   r   Ú<module>   s   Gþ