o
    M,h                     @   s  d dl Z d dlZd dlZd dlmZmZmZ ddlmZm	Z	 ddl
mZmZmZmZ ddlmZmZ 	 ejejdfgZeedrJeejejdf eedrYeejejd	f eed
rheejejdf eedrweejejdf dag dZG dd dZdeeee f  ddfddZ!deeee 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)OptionalUnionAny   )"WebSocketConnectionClosedExceptionWebSocketTimeoutException)SSLErrorSSLEOFError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                   @   s6   e Zd Zdeee  deeeef  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!   ]/var/www/www-root/data/www/bot.pdev.uz/venv/lib/python3.10/site-packages/websocket/_socket.py__init__8   s   
zsock_opt.__init__)
__name__
__module____qualname__r   listtupledictstrr   r#   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   D   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   Q   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 |d u rct d|sit 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 td)Nz%Connection timed out waiting for data)r   r
   socketerrorr   errnoEAGAINEWOULDBLOCK	selectorsDefaultSelectorregister
EVENT_READselect
gettimeoutcloser   )exc
error_codeselrr.   r-   r!   r"   _recva   s$   
zrecv.<locals>._recvr   zConnection timed out	timed outz#Connection to remote host was lost.)r   r:   r   TimeoutErrorr   r0   r   r   r   
isinstancer*   )r-   r.   rA   bytes_emessager!   r@   r"   r   ]   s4   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dtf fdd}z dkr' W S | W S  tjy? } zt	|}t
|d }~w ttfy^ } zt	|}t |trYd|v rYt
| d }~ww )Nzutf-8r/   r   c               
      s   z  W S  ty   td ty   Y n% tjy= }  zt| }|d u r* |tjtj	fvr3 W Y d } ~ nd } ~ ww t
 }|t
j | }|  |r[  S dS )Nr/   r   )r   r	   r   r   r0   r1   r   r2   r3   r4   r5   r6   r7   EVENT_WRITEr9   r:   r;   )r<   r=   r>   wrN   r-   r!   r"   _send   s,   
zsend.<locals>._sendr   rB   )rD   r*   encoder   intr:   r   r0   r   r   r   OSErrorr   )r-   rN   rR   rF   rG   r!   rQ   r"   r      s(   

r   )(r2   r5   r0   typingr   r   r   _exceptionsr   r   _ssl_compatr   r	   r
   r   _utilsr   r   SOL_TCPTCP_NODELAYr   hasattrrJ   
SOL_SOCKETr   r   r   r   r,   __all__r   rT   floatr   r   bytesr   r   r*   r   r!   r!   r!   r"   <module>   s2    



7$
