o
    lÇhN  ã                   @   s€  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ƒrDe ejejdf¡ eedƒrSe ejejd	f¡ eed
ƒrbe ejejdf¡ eedƒrqe ejejdf¡ dag d¢ZG dd„ dƒZdeeedf ddfdd„Zdeeedf fdd„Zdejdede fdd„Z!dejde fdd„Z"dejdee e#f def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dededdfdd„ZdS )r   ÚsockoptÚssloptÚreturnNc                 C   s.   |d u rg }|d u ri }|| _ || _d | _d S ©N)r   r   Útimeout)Úselfr   r   © r   úe/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/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   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Úbufsizec              
      sÆ   ˆst dƒ‚‡ ‡fdd„}zˆ ¡ dkrˆ ˆ ¡}n|ƒ }W n< ty)   tdƒ‚ tjy= } zt|ƒ}t|ƒ‚d }~w tyZ } zt|ƒ}t	|t
ƒrUd|v rUt|ƒ‚‚ d }~ww |sat 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r$‚ W Y d } ~ nd } ~ ww t 	¡ }| 
ˆtj¡ | ˆ ¡ ¡}| ¡  |rLˆ  ˆ ¡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   [   s0   €€€ûr   c                 C   s0   g }	 t | dƒ}| |¡ |dkrnqd |¡S )NTr   ó   
ó    )r   ÚappendÚjoin)r)   ÚlineÚcr   r   r    r   ‰   s   

ü
r   Údatac              
      s´   t ˆ tƒr
ˆ  d¡‰ ˆstdƒ‚‡ ‡fdd„}zˆ ¡ dkr$ˆ ˆ ¡W S |ƒ W S  tjy< } zt|ƒ}t	|ƒ‚d }~w t
yY } zt|ƒ}t |tƒrTd|v rTt	|ƒ‚‚ d }~ww )Nzutf-8r+   c               
      s¦   zˆ  ˆ ¡W S  ty   Y n% tjy3 }  zt| ƒ}|d u r ‚ |tjtjfvr)‚ W Y d } ~ nd } ~ ww t 	¡ }| 
ˆtj¡ | ˆ ¡ ¡}| ¡  |rQˆ  ˆ ¡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>   s2    



.$
