o
    RhN                     @   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   Q/home/air/sanwanet/back_V2/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    



.$
