HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //usr/local/lib/python3.10/dist-packages/aiohttp/__pycache__/client_ws.cpython-310.pyc
o

���g�:�@s&dZddlZddlZddlmZddlmZmZmZm	Z	ddl
Z
ddlmZddl
mZmZmZddlmZdd	lmZmZdd
lmZmZmZmZmZmZddlmZmZddl m!Z!dd
l"m#Z#m$Z$m%Z%m&Z&ej'dkrrddlZ(nddl(Z(e
j)ddd�Gdd�d��Z*e*ddd�Z+Gdd�d�Z,dS)zWebSocket client for asyncio.�N)�
TracebackType)�Any�Optional�Type�cast�)�WebSocketDataQueue)�ClientError�ServerTimeoutError�WSMessageTypeError)�ClientResponse)�calculate_timeout_when�
set_result)�WS_CLOSED_MESSAGE�WS_CLOSING_MESSAGE�WebSocketError�WSCloseCode�	WSMessage�	WSMsgType)�_INTERNAL_RECEIVE_TYPES�WebSocketWriter)�	EofStream)�DEFAULT_JSON_DECODER�DEFAULT_JSON_ENCODER�JSONDecoder�JSONEncoder)��T)�frozen�slotsc@s0eZdZejeedd�Zejeedd�ZdS)�ClientWSTimeoutN)�type�default)	�__name__�
__module__�__qualname__�attr�ibr�float�
ws_receive�ws_close�r+r+�</usr/local/lib/python3.10/dist-packages/aiohttp/client_ws.pyr %sr g$@)r)r*c@s�eZdZdddd�dededeeded	ed
e	de	de
jd
eede
de	ddfdd�Zdddd�Zdddd�Zdddd�Zdddd�Zdedd�Zdddd �Zd!eddfd"d#�Zddd$d%�Zddd&d'�Zede	fd(d)��Zedee
fd*d+��Zedeefd,d-��Zede
fd.d/��Zede	fd0d1��Zdfd2ed3edefd4d5�Z deefd6d7�Z!dgd9e"ddfd:d;�Z#dgd9e"ddfd<d=�Z$	dfd9e"d>e%dee
ddfd?d@�Z&dfdAedee
ddfdBdC�Z'dfdAe"dee
ddfdDdE�Z(	dfe)dF�dAedee
dGe*ddfdHdI�Z+e,j-d8dJ�dKe
d9e"de	fdLdM�Z.dfd	eede/fdNdO�Z0ddP�d	eedefdQdR�Z1ddP�d	eede"fdSdT�Z2e3ddU�dVe4d	eedefdWdX�Z5dhdYdZ�Z6de/fd[d\�Z7dhd]d^�Z8d_ee9ed`eedaee:ddfdbdc�Z;dS)i�ClientWebSocketResponseNrF)�	heartbeat�compress�client_notakeover�reader�writer�protocol�response�timeout�	autoclose�autoping�loopr.r/r0�returnc	Cs�||_|j|_||_||_||_d|_d|_d|_||_	||_
||_|	|_d|_
d|_|	dur4|	d|_d|_||_d|_d|_d|_|
|_||_d|_|��dS)NFgg@)�	_response�
connection�_conn�_writer�_reader�	_protocol�_closed�_closing�_close_code�_timeout�
_autoclose�	_autoping�
_heartbeat�
_heartbeat_cb�_heartbeat_when�_pong_heartbeat�_pong_response_cb�_loop�_waiting�_close_wait�
_exception�	_compress�_client_notakeover�
_ping_task�_reset_heartbeat)�selfr1r2r3r4r5r6r7r8r.r/r0r+r+r,�__init__/s2
z ClientWebSocketResponse.__init__cCsD|��|jdur|j��d|_|jdur |j��d|_dSdS�N)�_cancel_pong_response_cbrG�cancelrQ�rSr+r+r,�_cancel_heartbeatZs




�z)ClientWebSocketResponse._cancel_heartbeatcCs"|jdur|j��d|_dSdSrU)rJrWrXr+r+r,rVcs


�z0ClientWebSocketResponse._cancel_pong_response_cbcCs�|jdurdS|��|j}|dusJ�|j}|dur|jjnd}|��}t||j|�}||_|j	dur>|�
||j�|_	dSdS)N�)rFrVrKr<�
_connector�_timeout_ceil_threshold�timer
rHrG�call_at�_send_heartbeat)rSr8�conn�timeout_ceil_threshold�now�whenr+r+r,rRhs
�
�z(ClientWebSocketResponse._reset_heartbeatcCs�d|_|j}|��}||jkr|�|j|j�|_dS|j}|dur%|jjnd}t	||j
|�}|��|�||j�|_
|j�dtj�}tjdkrPtj||dd�}n|�|�}|��sd||_|�|j�dS|�|�dS)NrZ�)r�T)r8�eager_start)rGrKr]rHr^r_r<r[r\r
rIrV�_pong_not_receivedrJr=�
send_framer�PING�sys�version_info�asyncio�Task�create_task�donerQ�add_done_callback�_ping_task_done)rSr8rbr`rarc�coro�	ping_taskr+r+r,r_}s,
��

z'ClientWebSocketResponse._send_heartbeat�task�asyncio.Task[None]cCs(|��s|��}r|�|�d|_dS)z*Callback for when the ping task completes.N)�	cancelled�	exception�_handle_ping_pong_exceptionrQ)rSrt�excr+r+r,rq�s

z'ClientWebSocketResponse._ping_task_donecCs|�t��dSrU)rxr
rXr+r+r,rg�sz*ClientWebSocketResponse._pong_not_receivedrycCsZ|jrdS|��tj|_||_|j��|jr)|j	s+|j
�tt
j|d�d�dSdSdS)z5Handle exceptions raised during ping/pong processing.Nr)r@�_set_closedr�ABNORMAL_CLOSURErBrNr:�closerLrAr>�	feed_datarr�ERROR)rSryr+r+r,rx�s
�z3ClientWebSocketResponse._handle_ping_pong_exceptioncC�d|_|��dS)zdSet the connection to closed.

        Cancel any heartbeat timers and set the closed flag.
        TN)r@rYrXr+r+r,rz��z#ClientWebSocketResponse._set_closedcCr)zfSet the connection to closing.

        Cancel any heartbeat timers and set the closing flag.
        TN)rArYrXr+r+r,�_set_closing�r�z$ClientWebSocketResponse._set_closingcC�|jSrU)r@rXr+r+r,�closed��zClientWebSocketResponse.closedcCr�rU)rBrXr+r+r,�
close_code�r�z"ClientWebSocketResponse.close_codecCr�rU)r?rXr+r+r,r3�r�z ClientWebSocketResponse.protocolcCr�rU)rOrXr+r+r,r/�r�z ClientWebSocketResponse.compresscCr�rU)rPrXr+r+r,r0�r�z)ClientWebSocketResponse.client_notakeover�namer"cCs2|jj}|dur
|S|j}|dur|S|�||�S)z$extra info from connection transportN)r:r;�	transport�get_extra_info)rSr�r"r`r�r+r+r,r��sz&ClientWebSocketResponse.get_extra_infocCr�rU)rNrXr+r+r,rw�sz!ClientWebSocketResponse.exceptionrd�messagec���|j�|tj�IdHdSrU)r=rhrri�rSr�r+r+r,�ping���zClientWebSocketResponse.pingc�r�rU)r=rhr�PONGr�r+r+r,�pong�r�zClientWebSocketResponse.pong�opcodec�s�|j�|||�IdHdS)z Send a frame over the websocket.N)r=rh)rSr�r�r/r+r+r,rh�s�z"ClientWebSocketResponse.send_frame�datac�s@�t|t�stdt|���|jj|�d�tj|d�IdHdS)Nzdata argument must be str (%r)zutf-8�r/)	�
isinstance�str�	TypeErrorr!r=rh�encoder�TEXT�rSr�r/r+r+r,�send_str�s�
�z ClientWebSocketResponse.send_strc�s@�t|tttf�stdt|���|jj|tj	|d�IdHdS)Nz#data argument must be byte-ish (%r)r�)
r��bytes�	bytearray�
memoryviewr�r!r=rhr�BINARYr�r+r+r,�
send_bytes�s�z"ClientWebSocketResponse.send_bytes)�dumpsr�c�s�|j||�|d�IdHdS)Nr�)r�)rSr�r/r�r+r+r,�	send_json�s�z!ClientWebSocketResponse.send_json)�coder�r�c
�s��|jr%|js%|jdusJ�|j��|_|��|j�td�|jIdH|j	r*dS|�
�z|j�||�IdHWn0t
jyLtj|_|j���tyj}ztj|_||_|j��WYd}~dSd}~ww|jru|j��dS	z+t�|jj�4IdH�|j��IdH}Wd�IdHn1IdHs�wYWn0t
jy�tj|_|j���ty�}ztj|_||_|j��WYd}~dSd}~ww|jtjur�|j|_|j��dSqv)NrFT)rLrArK�
create_futurerMr�r>r}rr@rzr=r|rl�CancelledErrorrr{rBr:�	ExceptionrN�
async_timeoutr5rCr*�readr!r�CLOSEr�)rSr�r�ry�msgr+r+r,r|s`�

��
(��

��
�zClientWebSocketResponse.closec
�s��|p|jj}	|jrtd��|jrtS|jr |��IdHtSzXd|_zD|rOt�	|�4IdH�|j
��IdH}Wd�IdHn1IdHsIwYn|j
��IdH}|��Wd|_|j
rht|j
d�nd|_|j
rvt|j
d�wwWn�tjtjfy�tj|_�ty�tj|_|��IdHttjdd�YSty�|��tj|_tYSty�}z|j|_|j|jd�IdHttj|d�WYd}~Sd}~wt�y}z||_ |�!�tj|_|��IdHttj|d�WYd}~Sd}~ww|j"t#v�r|S|j"tj$u�r.|�!�|j%|_|j�s,|j&�r,|��IdH|S|j"tj'u�r;|�!�|S|j"tj(u�rP|j)�rP|�*|j%�IdHq|j"tj+u�r\|j)�r\q|S)NTz+Concurrent call to receive() is not allowedF)r�),rCr)rL�RuntimeErrorr@rrAr|r�r5r>r�rRrMrrlr��TimeoutErrorrr{rBr�OKrr�CLOSEDr	rzrr�r~r�rNr�r!rr�r�rD�CLOSINGrirEr�r�)rSr5�receive_timeoutr�ryr+r+r,�receive6s��(��
�������	��zClientWebSocketResponse.receive�r5c��D�|�|�IdH}|jtjurtd|j�d|j�d���tt|j�S)N�Received message �:z is not WSMsgType.TEXT)r�r!rr�rr�rr��rSr5r�r+r+r,�receive_str���z#ClientWebSocketResponse.receive_strc�r�)Nr�r�z is not WSMsgType.BINARY)r�r!rr�rr�rr�r�r+r+r,�
receive_bytes�r�z%ClientWebSocketResponse.receive_bytes)�loadsr5r�c�s�|j|d�IdH}||�S)Nr�)r�)rSr�r5r�r+r+r,�receive_json�s�z$ClientWebSocketResponse.receive_jsoncCs|SrUr+rXr+r+r,�	__aiter__�sz!ClientWebSocketResponse.__aiter__c�s.�|��IdH}|jtjtjtjfvrt�|SrU)r�r!rr�r�r��StopAsyncIteration)rSr�r+r+r,�	__anext__�s
�z!ClientWebSocketResponse.__anext__c�s�|SrUr+rXr+r+r,�
__aenter__�s�z"ClientWebSocketResponse.__aenter__�exc_type�exc_val�exc_tbc�s�|��IdHdSrU)r|)rSr�r�r�r+r+r,�	__aexit__�s�z!ClientWebSocketResponse.__aexit__)r9N)rtrur9NrU)rd)r9r-)<r#r$r%rrrr�rr �boolrl�AbstractEventLoopr(�intrTrYrVrRr_rqrg�
BaseExceptionrxrzr��propertyr�r�r3r/r0rr�rwr�r�r�rrhr�r�rrr�rr�r|rr�r�r�rrr�r�r�r�rrr�r+r+r+r,r-.s���������	���
�
�
+
	


"



����
������
� 	1I���
�
	

����r-)-�__doc__rlrj�typesr�typingrrrrr&�_websocket.readerr�client_exceptionsr	r
r�
client_reqrepr�helpersr
r�httprrrrrr�http_websocketrr�streamsr�typedefsrrrrrkr��sr �DEFAULT_WS_CLIENT_TIMEOUTr-r+r+r+r,�<module>s*