a
    ˜Ê›eN  ã                   @   sr  d dl Z d dlZd dlZd dlmZ ddlmZmZ ddlm	Z	m
Z
mZ ddlmZmZ ejejdfgZeedƒr†e ejejdf¡ eedƒr¤e ejejd	f¡ eed
ƒrÂe ejejdf¡ eedƒràe ejejdf¡ dag d¢ZG dd„ dƒZeeedf ddœdd„Zeeedf dœdd„Zejee dœdd„Z!eje dœdd„Z"ejee e#f edœdd„Z$dS ) é    N)ÚUnioné   )Ú"WebSocketConnectionClosedExceptionÚWebSocketTimeoutException)ÚSSLErrorÚSSLWantReadErrorÚSSLWantWriteError)Úextract_error_codeÚextract_err_messageÚSO_KEEPALIVEÚTCP_KEEPIDLEé   ÚTCP_KEEPINTVLé
   ÚTCP_KEEPCNTé   )ÚDEFAULT_SOCKET_OPTIONÚsock_optÚsetdefaulttimeoutÚgetdefaulttimeoutÚrecvÚ	recv_lineÚsendc                   @   s   e Zd Zeeddœdd„ZdS )r   N)ÚsockoptÚssloptÚreturnc                 C   s.   |d u rg }|d u ri }|| _ || _d | _d S ©N)r   r   Útimeout)Úselfr   r   © r   úL/var/www/html/efn/efnconsultor/selenium/selenium-4.34.2/websocket/_socket.pyÚ__init__8   s    zsock_opt.__init__)Ú__name__Ú
__module__Ú__qualname__ÚlistÚdictr!   r   r   r   r    r   7   s   r   )r   r   c                 C   s   | a dS )zž
    Set the global timeout setting to connect.

    Parameters
    ----------
    timeout: int or float
        default socket timeout time (in seconds)
    N©Ú_default_timeout)r   r   r   r    r   B   s    
r   )r   c                   C   s   t S )zŸ
    Get default timeout

    Returns
    ----------
    _default_timeout: int or float
        Return the global timeout setting (in seconds) to connect.
    r'   r   r   r   r    r   O   s    	r   )ÚsockÚbufsizer   c              
      sä   ˆst dƒ‚‡ ‡fdd„}z"ˆ ¡ dkr4ˆ ˆ ¡}n|ƒ }W n– tyV   tdƒ‚Y n~ tjyŠ } zt|ƒ}t|ƒ‚W Y d }~nRd }~0  tyÒ } z2t|ƒ}t	|t
ƒr¼d|v r¼t|ƒ‚n‚ W Y d }~n
d }~0 0 |sàt dƒ‚|S )Núsocket is already closed.c               
      sœ   zˆ  ˆ ¡W S  ty   Y n@ tjy\ }  z&t| ƒ}|tjtjfvrH‚ W Y d } ~ n
d } ~ 0 0 t 	¡ }| 
ˆtj¡ | ˆ ¡ ¡}| ¡  |r˜ˆ  ˆ ¡S d S r   )r   r   ÚsocketÚerrorr	   ÚerrnoÚEAGAINÚEWOULDBLOCKÚ	selectorsÚDefaultSelectorÚregisterÚ
EVENT_READÚselectÚ
gettimeoutÚclose)ÚexcÚ
error_codeÚselÚr©r*   r)   r   r    Ú_recv_   s    zrecv.<locals>._recvr   zConnection timed outú	timed outz#Connection to remote host was lost.)r   r6   r   ÚTimeoutErrorr   r,   r   r
   r   Ú
isinstanceÚstr)r)   r*   r=   Úbytes_ÚeÚmessager   r<   r    r   [   s(    

r   )r)   r   c                 C   s.   g }t | dƒ}| |¡ |dkrq$qd |¡S )Nr   ó   
ó    )r   ÚappendÚjoin)r)   ÚlineÚcr   r   r    r   ‰   s    

r   )r)   Údatar   c              
      sÖ   t ˆ tƒrˆ  d¡‰ ˆs tdƒ‚‡ ‡fdd„}z$ˆ ¡ dkrHˆ ˆ ¡W S |ƒ W S W n~ tjyˆ } zt|ƒ}t	|ƒ‚W Y d }~nRd }~0  t
yÐ } z2t|ƒ}t |tƒrºd|v rºt	|ƒ‚n‚ W Y d }~n
d }~0 0 d S )Nzutf-8r+   c               
      s¦   zˆ  ˆ ¡W S  ty   Y nJ tjyf }  z0t| ƒ}|d u r@‚ |tjtjfvrR‚ W Y d } ~ n
d } ~ 0 0 t 	¡ }| 
ˆtj¡ | ˆ ¡ ¡}| ¡  |r¢ˆ  ˆ ¡S d S r   )r   r   r,   r-   r	   r.   r/   r0   r1   r2   r3   ÚEVENT_WRITEr5   r6   r7   )r8   r9   r:   Úw©rK   r)   r   r    Ú_sendš   s     zsend.<locals>._sendr   r>   )r@   rA   Úencoder   r6   r   r,   r   r
   r   Ú	Exception)r)   rK   rO   rC   rD   r   rN   r    r   “   s"    


r   )%r.   r1   r,   Útypingr   Ú_exceptionsr   r   Ú_ssl_compatr   r   r   Ú_utilsr	   r
   ÚSOL_TCPÚTCP_NODELAYr   ÚhasattrrG   Ú
SOL_SOCKETr   r   r   r   r(   Ú__all__r   ÚintÚfloatr   r   Úbytesr   r   rA   r   r   r   r   r    Ú<module>   s.   



.
