o
    Zh                     @  s   d dl mZ d dlZ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 ddlmZ ddlmZ dd	lmZ dd
lmZ dgZd$ddZd$ddZG dd dejZd%ddZd&ddZd'dd Zd(d)d#dZdS )*    )annotationsN)	Generator   )ClientConnectionconnect)SimpleQueue)ConnectionClosed)Close)StreamReader)versionmainstringstrreturnNonec                 C  "   t jd|  d t j  d S )Nz	7
[A[Lz
8[Bsysstdoutwriteflushr    r   E/var/www/html/lang_env/lib/python3.10/site-packages/websockets/cli.pyprint_during_input   s   r   c                 C  r   )Nz[K
r   r   r   r   r   print_over_input(   s   r   c                   @  sH   e Zd ZdddZdddZdd
dZdddZdddZdddZdS )	ReadLinesr   r   c                 C  s   t  | _t | _d S N)r
   readerr   messagesselfr   r   r   __init__5   s   zReadLines.__init__Generator[None, None, None]c                 c  sF    	 t jd t j  | jt jE d H }| j|	 
d q)NTz> z
)r   r   r   r   r   Z	read_linemaxsizer    putdecoderstrip)r"   liner   r   r   parse9   s   
zReadLines.parse	transportasyncio.BaseTransportc                 C  s   |   | _t| j d S r   )r*   parsernext)r"   r+   r   r   r   connection_made@      
zReadLines.connection_madedatabytesc                 C  s   | j | t| j d S r   )r   	feed_datar.   r-   )r"   r1   r   r   r   data_receivedD   s   zReadLines.data_receivedc                 C  s   | j   d S r   )r   feed_eofr!   r   r   r   eof_receivedH   s   zReadLines.eof_receivedexcException | Nonec                 C  s   | j   | j  d S r   )r   discardr    abort)r"   r7   r   r   r   connection_lostL   r0   zReadLines.connection_lostN)r   r   )r   r$   )r+   r,   r   r   )r1   r2   r   r   )r7   r8   r   r   )	__name__
__module____qualname__r#   r*   r/   r4   r6   r;   r   r   r   r   r   4   s    




r   	websocketr   c                   sB   | 2 z3 d H W }t |trtd|  qtd|   q6 d S )Nz< z< (binary) )
isinstancer   r   hex)r?   messager   r   r   print_incoming_messagesQ   s   
rC   r    SimpleQueue[str]c                   sX   	 z	|  I d H }W n
 ty   Y d S w z
| |I d H  W n
 ty*   Y d S w qr   )getEOFErrorsendr   )r?   r    rB   r   r   r   send_outgoing_messagesY   s   rH   uric           	   
     s^  z	t | I d H }W n" ty, } ztd|  d| d td W Y d }~nd }~ww td|  d t }|ttj	I d H \}}t
t|}t
t||j}z(ztj||gtjdI d H  W n
 tjyo   Y nw W |  |  |  n|  |  |  w | I d H  |jd ur|jd usJ t|j|j}td| d d S )NzFailed to connect to z: .r   zConnected to )return_whenzConnection closed: )r   	Exceptionprintr   exitasyncioget_running_loopconnect_read_piper   stdincreate_taskrC   rH   r    waitFIRST_COMPLETEDCancelledErrorcancelcloseZ
close_codeZclose_reasonr	   r   )	rI   r?   r7   loopr+   protocolincomingoutgoingZclose_statusr   r   r   interactive_clienth   sH   



r]   argvlist[str] | Nonec                 C  s   t jdddd}| }|jddd |jdd	d
d || }|jr,tdt  d S |jd u r:|	  t
d t
jdkrDtd zdd l}W n	 tyS   Y nw ztt|j W d S  tyi   Y d S w )NZ
websocketszInteractive WebSocket client.F)progdescriptionadd_helpz	--version
store_true)actionrI   z<uri>?)metavarnargszwebsockets    win32 r   )argparseArgumentParseradd_mutually_exclusive_groupadd_argument
parse_argsr   rM   websockets_versionrI   print_usager   rN   platformossystemreadlineImportErrorrO   runr]   KeyboardInterrupt)r^   r-   groupargsru   r   r   r   r      s6   




)r   r   r   r   )r?   r   r   r   )r?   r   r    rD   r   r   )rI   r   r   r   r   )r^   r_   r   r   )
__future__r   rk   rO   rs   r   typingr   Zasyncio.clientr   r   Zasyncio.messagesr   
exceptionsr   framesr	   streamsr
   r   rp   __all__r   r   Protocolr   rC   rH   r]   r   r   r   r   r   <module>   s(    




)