
­­­­­­­­­­­­­­­­­­
<!DOCTYPE html>
<html>
U
    '7`/(                     @   s   d Z ddlZddlmZmZ ddlZddlmZ ddlm	Z	 ddl
mZmZ ddlmZmZmZmZmZ dd	lmZ dd
lmZmZ ddlmZmZmZmZ G dd dZdS )zWebSocket client for asyncio.    N)AnyOptional   )ClientError)ClientResponse)
call_later
set_result)WS_CLOSED_MESSAGEWS_CLOSING_MESSAGEWebSocketError	WSMessage	WSMsgType)WebSocketWriter)	EofStreamFlowControlDataQueue)DEFAULT_JSON_DECODERDEFAULT_JSON_ENCODERJSONDecoderJSONEncoderc                   @   s  e Zd Zddddddeee eeeee	j
ee ee eeddddZdd	d
dZdd	ddZdd	ddZdd	ddZeed	ddZeee d	ddZeee d	ddZeed	ddZeed	ddZdEeeedddZee d	dd ZdFedd"d#d$ZdGedd"d%d&ZdHeee dd'd(d)ZdIeee dd'd*d+ZdJe d,eee e!dd-d.d/Z"d0d!d1eeed2d3d4Z#dKee e$d5d6d7Z%dd8ee ed5d9d:Z&dd8ee ed5d;d<Z'e(dd=e)ee ed>d?d@Z*d d	dAdBZ+e$d	dCdDZ,dS )LClientWebSocketResponseNr   F)receive_timeout	heartbeatcompressclient_notakeoverzFlowControlDataQueue[WSMessage])readerwriterprotocolresponsetimeout	autocloseautopingloopr   r   r   r   returnc	                C   s   || _ |j| _|| _|| _|| _d| _d| _d | _|| _	|	| _
|| _|| _|
| _d | _|
d k	rh|
d | _d | _|| _d | _d | _|| _|| _|   d S )NFg       @)	_response
connectionZ_conn_writer_reader	_protocol_closed_closing_close_code_timeout_receive_timeout
_autoclose	_autoping
_heartbeat_heartbeat_cb_pong_heartbeat_pong_response_cb_loop_waiting
_exception	_compress_client_notakeover_reset_heartbeat)selfr   r   r   r   r   r   r    r!   r   r   r   r    r:   D/opt/alt/python38/lib64/python3.8/site-packages/aiohttp/client_ws.py__init__   s.    
z ClientWebSocketResponse.__init__)r"   c                 C   s8   | j d k	r| j   d | _ | jd k	r4| j  d | _d S N)r2   cancelr0   r9   r:   r:   r;   _cancel_heartbeatG   s    



z)ClientWebSocketResponse._cancel_heartbeatc                 C   s*   |    | jd k	r&t| j| j| j| _d S r=   )r@   r/   r   _send_heartbeatr3   r0   r?   r:   r:   r;   r8   P   s    
  z(ClientWebSocketResponse._reset_heartbeatc                 C   sN   | j d k	rJ| jsJ| j| j  | jd k	r6| j  t| j	| j
| j| _d S r=   )r/   r(   r3   Zcreate_taskr%   pingr2   r>   r   _pong_not_receivedr1   r?   r:   r:   r;   rA   X   s    

  z'ClientWebSocketResponse._send_heartbeatc                 C   s*   | j s&d| _ d| _t | _| j  d S )NT  )r(   r*   asyncioTimeoutErrorr5   r#   closer?   r:   r:   r;   rC   e   s
    
z*ClientWebSocketResponse._pong_not_receivedc                 C   s   | j S r=   )r(   r?   r:   r:   r;   closedl   s    zClientWebSocketResponse.closedc                 C   s   | j S r=   )r*   r?   r:   r:   r;   
close_codep   s    z"ClientWebSocketResponse.close_codec                 C   s   | j S r=   )r'   r?   r:   r:   r;   r   t   s    z ClientWebSocketResponse.protocolc                 C   s   | j S r=   )r6   r?   r:   r:   r;   r   x   s    z ClientWebSocketResponse.compressc                 C   s   | j S r=   )r7   r?   r:   r:   r;   r   |   s    z)ClientWebSocketResponse.client_notakeover)namedefaultr"   c                 C   s2   | j j}|dkr|S |j}|dkr&|S |||S )z$extra info from connection transportN)r#   r$   	transportget_extra_info)r9   rJ   rK   ZconnrL   r:   r:   r;   rM      s    z&ClientWebSocketResponse.get_extra_infoc                 C   s   | j S r=   )r5   r?   r:   r:   r;   	exception   s    z!ClientWebSocketResponse.exception    )messager"   c                    s   | j |I d H  d S r=   )r%   rB   r9   rP   r:   r:   r;   rB      s    zClientWebSocketResponse.pingc                    s   | j |I d H  d S r=   )r%   pongrQ   r:   r:   r;   rR      s    zClientWebSocketResponse.pong)datar   r"   c                    s6   t |tstdt| | jj|d|dI d H  d S )Nzdata argument must be str (%r)Fbinaryr   )
isinstancestr	TypeErrortyper%   sendr9   rS   r   r:   r:   r;   send_str   s    
z ClientWebSocketResponse.send_strc                    s<   t |tttfs tdt| | jj|d|dI d H  d S )Nz#data argument must be byte-ish (%r)TrT   )rV   bytes	bytearray
memoryviewrX   rY   r%   rZ   r[   r:   r:   r;   
send_bytes   s    z"ClientWebSocketResponse.send_bytes)dumps)rS   r   ra   r"   c                   s   | j |||dI d H  d S )N)r   )r\   )r9   rS   r   ra   r:   r:   r;   	send_json   s    z!ClientWebSocketResponse.send_json  )coderP   )rd   rP   r"   c             
      s  | j d k	r*| js*| jtd | j I d H  | js|   d| _z| j||I d H  W nd tj	k
r   d| _
| j   Y n> tk
r } z d| _
|| _| j  W Y dS d }~X Y nX | jr| j  dS z2tj| j| jd | j I d H }W 5 Q R X W nh tj	k
r.   d| _
| j   Y n@ tk
rl } z d| _
|| _| j  W Y dS d }~X Y nX |jtjkr|j| _
| j  dS qndS d S )Nr   TrD   r!   F)r4   r(   r&   Z	feed_datar
   r@   r%   rG   rE   CancelledErrorr*   r#   	Exceptionr5   r)   async_timeoutr   r+   r3   readrY   r   CLOSErS   )r9   rd   rP   excmsgr:   r:   r;   rG      sJ    





zClientWebSocketResponse.close)r   r"   c              
      s\  | j d k	rtd| jrtS | jr4|  I d H  tS zj| j | _ z>t	j
|pP| j| jd | j I d H }W 5 Q R X |   W 5 | j }d | _ t|d X W n" tjtjfk
r   d| _ Y  n tk
r   d| _|  I d H  ttjd d  Y S  tk
r   d| _d| _t Y S  tk
rl } z2|j| _| j|jdI d H  ttj|d  W Y S d }~X Y nV tk
r } z6|| _d| _d| _|  I d H  ttj|d  W Y S d }~X Y nX |jtjkrd| _|j| _| jsX| j rX|  I d H  nZ|jtj!krd| _nD|jtj"kr@| j#r@| $|jI d H  q n|jtj%krX| j#rXq |S )Nz+Concurrent call to receive() is not allowedTre   rD   rc   )rd   )&r4   RuntimeErrorr(   r	   r)   rG   r3   Zcreate_futurer   rh   r   r,   r&   ri   r8   rE   rf   rF   r*   r   r   r   CLOSEDr   r   rd   ERRORrg   r5   rY   rj   rS   r-   CLOSINGZPINGr.   rR   ZPONG)r9   r   waiterrl   rk   r:   r:   r;   receive   sj    
 "$zClientWebSocketResponse.receiver   c                   s<   |  |I d H }|jtjkr6td|j d|jd|jS )NReceived message :z is not str)rr   rY   r   ZTEXTrX   rS   r9   r   rl   r:   r:   r;   receive_str  s    z#ClientWebSocketResponse.receive_strc                   s<   |  |I d H }|jtjkr6td|j d|jd|jS )Nrt   ru   z is not bytes)rr   rY   r   ZBINARYrX   rS   rv   r:   r:   r;   receive_bytes  s    z%ClientWebSocketResponse.receive_bytes)loadsr   )ry   r   r"   c                   s   | j |dI d H }||S )Nrs   )rw   )r9   ry   r   rS   r:   r:   r;   receive_json  s    z$ClientWebSocketResponse.receive_jsonc                 C   s   | S r=   r:   r?   r:   r:   r;   	__aiter__&  s    z!ClientWebSocketResponse.__aiter__c                    s,   |   I d H }|jtjtjtjfkr(t|S r=   )rr   rY   r   rj   rp   rn   StopAsyncIteration)r9   rl   r:   r:   r;   	__anext__)  s    z!ClientWebSocketResponse.__anext__)N)rO   )rO   )N)N)N)N)-__name__
__module____qualname__r   r   rW   r   floatboolrE   ZAbstractEventLoopintr<   r@   r8   rA   rC   propertyrH   rI   r   r   r   r   rM   BaseExceptionrN   r]   rB   rR   r\   r`   r   r   rb   rG   r   rr   rw   rx   r   r   rz   r{   r}   r:   r:   r:   r;   r      sz   *	
 	/<		r   )__doc__rE   typingr   r   rh   Zclient_exceptionsr   Zclient_reqrepr   Zhelpersr   r   httpr	   r
   r   r   r   Zhttp_websocketr   Zstreamsr   r   Ztypedefsr   r   r   r   r   r:   r:   r:   r;   <module>   s   