HEX
Server: LiteSpeed
System: Linux s1049.use1.mysecurecloudhost.com 4.18.0-477.27.2.lve.el8.x86_64 #1 SMP Wed Oct 11 12:32:56 UTC 2023 x86_64
User: xedaptot (3356)
PHP: 8.3.31
Disabled: NONE
Upload Files
File: //opt/saltstack/salt/lib/python3.10/site-packages/aiohttp/__pycache__/web_ws.cpython-310.pyc
o

;j?k�@sFUddlZddlZddlZddlZddlZddlZddlmZmZddl	m
Z
mZmZm
Z
mZmZddlZddlmZddlmZddlmZddlmZdd	lmZdd
lmZmZmZmZddl m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-ddl.m/Z/dd
l0m1Z1ddl2m3Z3ddl4m5Z5m6Z6m7Z7ddl8m9Z9m:Z:ddl;m<Z<ddl=m>Z>ej?dkr�ddl	m@Z@nddlAm@Z@ej?dkr�ddlmBZBnddl	mCZCeCeDeEddfZBej?dkr�ddlZFddl	mGZGn
ddlFZFddlAmGZGdZHdZIeeJeKd<e@deLd e
d d!�ZMejNd d d d"�Gd#d$�d$��ZOGd%d&�d&e>eeM�ZPdS)'�N)�Callable�Iterable)�Any�Final�Generic�Literal�cast�overload)�CIMultiDict�)�hdrs)�WebSocketDataQueue)�AbstractStreamWriter)�WSMessageTypeError)�DEFAULT_CHUNK_SIZE�calculate_timeout_when�
set_exception�
set_result)
�WS_CLOSED_MESSAGE�WS_CLOSING_MESSAGE�WS_KEY�WebSocketError�WebSocketReader�WebSocketWriter�WSCloseCode�	WSMessage�WSMessageDecodeText�WSMessageNoDecodeText�	WSMsgType�
ws_ext_gen�ws_ext_parse)�_INTERNAL_RECEIVE_TYPES)�	ws_logger)�	EofStream)�JSONBytesEncoder�JSONDecoder�JSONEncoder)�HTTPBadRequest�
HTTPException)�BaseRequest)�StreamResponse)��
)�TypeVar�r+�)�Buffer)�Unionzmemoryview[int]zmemoryview[bytes])r+�)�Self)�WebSocketResponse�WebSocketReadyr��THRESHOLD_CONNLOST_ACCESS�_DecodeTextT)�bound�	covariant�default)Zauto_attribs�frozen�slotsc@s0eZdZUeed<edBed<defdd�ZdS)r5�okN�protocol�returncC�|jS�N)r>��self�rE�B/opt/saltstack/salt/lib/python3.10/site-packages/aiohttp/web_ws.py�__bool__R�zWebSocketReady.__bool__)�__name__�
__module__�__qualname__�bool�__annotations__�strrGrErErErFr5Ms
r5cs�eZdZUdZeed<dZedBed<dZe	dBed<dZ
edBed<dZeed<dZ
eed<d	Zeed
<dZedBed<dZejdBed<dZeed
<dZejddBed<dZedBed<dZeed<dZejdBed<dZejdBed<dZejddBed<dZ eed<dZ!ej"dBed<dddddddde#dd�
dededBdeded edBd!e$ed"ed#ed$ed%ed&df�fd'd(�Z%d�d)d*�Z&d�d+d,�Z'd�d-d.�Z(d�d/d0�Z)d�d1d2�Z*d�d3d4�Z+d�d7d8�Z,d�d9d:�Z-d;ed&dfd<d=�Z.d�d>d?�Z/d@e0d&e1f�fdAdB�Z2d@e0d&e3dCedBeeffdDdE�Z4d@e0d&e3edBe	ffdFdG�Z5d@e0dHedBdIe	d&dfdJdK�Z6d@e0d&e7fdLdM�Z8e9d&efdNdO��Z:e9d&efdPdQ��Z;e9d&edBfdRdS��Z<e9d&edBfdTdU��Z=e9d&eeBfdVdW��Z>d�dXedYe?d&e?fdZd[�Z@d&edBfd\d]�ZAd�d_eBd&dfd`da�ZCd�d_eBd&dfdbdc�ZD	d�d_eBddeEd"edBd&dfdedf�ZFd�dged"edBd&dfdhdi�ZGd�dgeBd"edBd&dfdjdk�ZH	d�eIjJdl�dge?d"edBdmeKd&dfdndo�ZL	d�dge?d"edBdmeMd&dfdpdq�ZNd�drds�ZOePjQd^ddt�dued_eBdved&efdwdx�ZRduePd&dfdydz�ZSduePd&dfd{d|�ZTd�d}d~�ZUeV	d�dd�dedBd&eWfd�d���ZXeV	d�dd�dedBd&eYfd�d���ZXeV	d�dd�dedBd&eWeYBfd�d���ZX	d�dedBd&eWeYBfd�d��ZXeVdd��dd�dedBd&efd�d���ZZeVdd��dd�dedBd&eBfd�d���ZZeVdd��dd�dedBd&eeBBfd�d���ZZdd��dedBd&eeBBfd�d��ZZdd��dedBd&eBfd�d��Z[eVd�dd��dd�d�e\dedBd&e?fd�d���Z]eVd�dd��dd�d�e^eBge?fdedBd&e?fd�d���Z]eVd�dd��dd�d�e\e^eBge?fBdedBd&e?fd�d���Z]eIj_dd��d�e\e^eBge?fBdedBd&e?fd�d��Z]dge`d&dfd�d��Zad&ebfd�d��ZceVdd�d&eWfd�d���ZdeVdd�d&eYfd�d���ZdeVdd�d&eWeYBfd�d���Zdd&eWeYBfd�d��Zdd;ed&dfd�d��Ze�ZfS)�r4F�
_length_checkN�_ws_protocol�_writer�_reader�_closed�_closingr�
_conn_lost�_close_code�_loop�_waiting�_close_wait�
_exceptiong�_heartbeat_when�
_heartbeat_cb�_pong_response_cb�
_ping_task�_need_heartbeat_reset�_heartbeat_reset_handleg$@TrEi@)
�timeout�receive_timeout�	autoclose�autoping�	heartbeat�	protocols�compress�max_msg_size�writer_limit�decode_textrarbrcrdrerfrgrhrirjr@c
slt�jdd�||_||_||_||_||_||_|dur"|d|_||_	||_
|	|_|
|_d|_
d|_dS)N�e)�statusg@F)�super�__init__�
_protocols�_timeout�_receive_timeout�
_autoclose�	_autoping�
_heartbeat�_pong_heartbeat�	_compress�
_max_msg_size�
_writer_limit�_decode_textr_r`)rDrarbrcrdrerfrgrhrirj��	__class__rErFrnks

zWebSocketResponse.__init__cCsd|��|jdur|j��d|_d|_|jdur!|j��d|_|jdur0|j��d|_dSdS�NF)�_cancel_pong_response_cbr`�cancelr_r\r^rCrErErF�_cancel_heartbeat�s






�z#WebSocketResponse._cancel_heartbeatcCs"|jdur|j��d|_dSdSrB)r]r~rCrErErFr}�s


�z*WebSocketResponse._cancel_pong_response_cbcCs>|jdus|jr
dS|j}|dusJ�d|_|�|j�|_dS�NT)rtr_rWZ	call_soon�_flush_heartbeat_resetr`)rD�looprErErF�_on_data_received�sz#WebSocketResponse._on_data_receivedcCs"d|_|jsdS|��d|_dSr|)r`r_�_reset_heartbeatrCrErErFr��s

z(WebSocketResponse._flush_heartbeat_resetcCs�|jdurdS|��|j}|dur|jjnd}|j}|dus!J�|��}t||j|�}||_|j	dur>|�
||j�|_	dSdS)Nr6)rtr}�_req�	_protocol�_timeout_ceil_thresholdrW�timerr[r\�call_at�_send_heartbeat)rD�req�timeout_ceil_thresholdr��now�whenrErErFr��s
�
�z"WebSocketResponse._reset_heartbeatcCs�d|_|jrdS|j}|dur|jdusJ�|��}||jkr*|�|j|j�|_dS|j}|dur5|j	j
nd}t||j|�}|�
�|�||j�|_|j�dtj�}tjdkr`tj||dd�}n|�|�}|��st||_|�|j�dS|�|�dS)Nr6�r.T)r�Zeager_start)r\r_rWrQr�r[r�r�r�r�r�rrur}�_pong_not_receivedr]�
send_framer�PING�sys�version_info�asyncio�TaskZcreate_taskZdoner^Zadd_done_callback�_ping_task_done)rDr�r�r�r�r��coroZ	ping_taskrErErFr��s2
��

z!WebSocketResponse._send_heartbeat�task�asyncio.Task[None]cCs(|��s|��}r|�|�d|_dS)z*Callback for when the ping task completes.N)Z	cancelled�	exception�_handle_ping_pong_exceptionr^)rDr��excrErErFr��s

z!WebSocketResponse._ping_task_donecCs<|jdur|jjdur|�t�d|j�d���dSdSdS)NzNo PONG received after z seconds)r��	transportr�r��TimeoutErrorrurCrErErFr��s���z$WebSocketResponse._pong_not_receivedr�cCsb|jrdS|��|�tj�||_|jr+|js-|jdur/|j�	t
tj|d�d�dSdSdSdS)z5Handle exceptions raised during ping/pong processing.Nr)
rS�_set_closed�_set_code_close_transportr�ABNORMAL_CLOSURErZrXrTrR�	feed_datarr�ERROR�rDr�rErErFr��s�z-WebSocketResponse._handle_ping_pong_exceptioncCsd|_|��dS)zdSet the connection to closed.

        Cancel any heartbeat timers and set the closed flag.
        TN)rSrrCrErErFr�szWebSocketResponse._set_closed�requestc�s^�|jdur	|jS|�|�\}}t��|�IdH}|dusJ�|�|||�|��IdH|SrB)�_payload_writer�
_pre_startrm�prepare�_post_start�drain)rDr�r?�writerZpayload_writerrzrErFr�
s�
zWebSocketResponse.preparezCIMultiDict[str]cCs�|j}d|�tjd�����krtd|�tj��d�d��|jjs-td|�tj	���d��d}tj
|vrYdd�|tj
�d	�D�}|D]}||jvrN|}nqCt
�d
|j||j�|�tjd�}|dvrltd|��d��|�tj�}z|r~tt�|��d
kr�td|��d��Wntjy�td|��d�d�wt�t�|��t������}ttjdtj	dtj|i�}	d}
d}|j r�|�tj!�}t"|dd�\}}
|r�t#|d|
d�}
|
|	tj!<|r�||	tj
<|	|||
fS)NZ	websocket�zNo WebSocket UPGRADE hdr: z$
 Can "Upgrade" only to "WebSocket".)�textzNo CONNECTION upgrade hdr: cSsg|]}t|����qSrE)rN�strip)�.0�protorErErF�
<listcomp>*s
��z0WebSocketResponse._handshake.<locals>.<listcomp>�,u<%s: Client protocols %r don’t overlap server-known ones %r)Z13�8�7zUnsupported version: �zHandshake error: �upgradeFrT)�isserver)rgr�Zserver_notakeover)$�headers�getrZUPGRADE�lowerr�r'Z_messager�Z
CONNECTIONZSEC_WEBSOCKET_PROTOCOL�splitror"�warningZremoteZSEC_WEBSOCKET_VERSIONZSEC_WEBSOCKET_KEY�len�base64�	b64decode�binascii�Error�	b64encode�hashlib�sha1�encoder�digest�decoder
ZSEC_WEBSOCKET_ACCEPTrvZSEC_WEBSOCKET_EXTENSIONSr r)rDr�r�r?Z
req_protocolsr��version�keyZ
accept_valZresponse_headers�
notakeoverrg�
extensionsZ
enabledextrErErF�
_handshakes���
�
���������

�zWebSocketResponse._handshakecCst|j|_|�|�\}}}}|�d�|j�|�|��||_|jj}|dur+t	d��t
|j||||jd�}||fS)NrkzConnection lost)rgr��limit)rWr�Z
set_statusr��updateZforce_closervr�r��ConnectionResetErrorrrx)rDr�r�r?rgr�r�r�rErErFr�js"
�zWebSocketResponse._pre_startr?r�cCs�||_||_|��|j}|dusJ�t|jt|d�|_t|j|j	t
|j�|jd�}|j
dur1dn|j}|jj||d�|j�d�dS)N)r�)rgrj)Zdata_received_cbF)rPrQr�rWr
r�rrRrrwrLrvryrtr�r?Z
set_parserZ
keep_alive)rDr�r?r�r��parser�cbrErErFr��s"��zWebSocketResponse._post_startcCsP|jdur	td��z|�|�\}}}}Wnty"tdd�YSwtd|�S)NzAlready startedFT)rQ�RuntimeErrorr�r(r5)rDr��_r?rErErF�can_prepare�s
�
zWebSocketResponse.can_preparecCs
|jduSrB)rQrCrErErF�prepared�s
zWebSocketResponse.preparedcCrArB)rSrCrErErF�closed��zWebSocketResponse.closedcCrArB)rVrCrErErF�
close_code�r�zWebSocketResponse.close_codecCrArB)rPrCrErErF�ws_protocol�r�zWebSocketResponse.ws_protocolcCrArB)rvrCrErErFrg�r�zWebSocketResponse.compress�namer;cCs0|j}|dur	|S|j}|dur|S|�||�S)z}Get optional transport information.

        If no value associated with ``name`` is found, ``default`` is returned.
        N)rQr��get_extra_info)rDr�r;r�r�rErErFr��sz WebSocketResponse.get_extra_infocCrArB)rZrCrErErFr��rHzWebSocketResponse.exceptionr��messagec��.�|jdur
td��|j�|tj�IdHdS�N�Call .prepare() first)rQr�r�rr��rDr�rErErF�ping�s�
zWebSocketResponse.pingc�r�r�)rQr�r�r�PONGr�rErErF�pong�s�
zWebSocketResponse.pong�opcodec�s.�|jdur
td��|j�|||�IdHdS)z Send a frame over the websocket.Nr�)rQr�r�)rDr�r�rgrErErFr��s�
zWebSocketResponse.send_frame�datac�sR�|jdur
td��t|t�stdt|���|jj|�d�tj	|d�IdHdS)Nr�zdata argument must be str (%r)zutf-8�rg)
rQr��
isinstancerN�	TypeError�typer�r�r�TEXT�rDr�rgrErErF�send_str�s�

�zWebSocketResponse.send_strc�sR�|jdur
td��t|tttf�stdt|���|jj|t	j
|d�IdHdS)Nr�z#data argument must be byte-ish (%r)r�)rQr�r��bytes�	bytearray�
memoryviewr�r�r�r�BINARYr�rErErF�
send_bytes�s�
zWebSocketResponse.send_bytes)�dumpsr�c�s�|j||�|d�IdHdS)Nr�)r��rDr�rgr�rErErF�	send_json�s�zWebSocketResponse.send_jsonc�s�|j||�|d�IdHdS)z�Send JSON data using a bytes-returning encoder as a binary frame.

        Use this when your JSON encoder (like orjson) returns bytes
        instead of str, avoiding the encode/decode overhead.
        r�N)r�r�rErErF�send_json_bytes�s�z!WebSocketResponse.send_json_bytesc�s6�|jrdS|jdurtd��|��IdHd|_dS)NzResponse has not been startedT)Z	_eof_sentr�r��closerCrErErF�	write_eofs�

zWebSocketResponse.write_eof)�coder�r�r�r�c
�s��|jdur
td��|jrdS|��z|j�||�IdH|j}|dus'J�|r0|��IdHWn-tjtj	fyC|�
tj��t
y^}z||_|�
tj�WYd}~dSd}~ww|j}|dushJ�|jr�|jdusrJ�|jdusyJ�|j��|_|�td�|jIdH|jr�|��dSz;t�|j�4IdH�#	|��IdH}|jtjur�|�
|j�	Wd�IdHWdSq�1IdHs�wYWdStjy�|�
tj��t
y�}z||_|�
tj�WYd}~dSd}~ww)zClose websocket connection.Nr�FTr) rQr�rSr�r�r�r�r�ZCancelledErrorr�r�rr��	ExceptionrZrRrXrWrYZ
create_futurer�rrT�_close_transport�
async_timeoutrarp�readr�r�CLOSEr�)rDr�r�r�r�r��reader�msgrErErFr�	sh�
�������zWebSocketResponse.closecCsd|_||_|��dS)z6Set the close code and mark the connection as closing.TN)rTrVr�rDr�rErErF�_set_closing@szWebSocketResponse._set_closingcCs||_|��dS)z+Set the close code and close the transport.N)rVr�rrErErFr�Fsz+WebSocketResponse._set_code_close_transportcCs.|jdur|jjdur|jj��dSdSdS)zClose the transport.N)r�r�r�rCrErErFr�Ks�z"WebSocketResponse._close_transportrDz WebSocketResponse[Literal[True]]c���dSrBrE�rDrarErErF�receiveP��zWebSocketResponse.receivez!WebSocketResponse[Literal[False]]c�rrBrErrErErFrUrzWebSocketResponse[_DecodeText]c�rrBrErrErErFrZrc
�s��|jdur
td��|p|j}	|jrtd��|jr,|jd7_|jtkr*td��tS|jr1t	SzTd|_z@|r`t
�|�4IdH�|j��IdH}Wd�IdHn1IdHsZwYn|j��IdH}Wd|_|j
rut|j
d�nd|_|j
r�t|j
d�wwWnqtjy��ty�tj|_|��IdHttjdd�YSty�}z|j|_|j|jd�IdHttj|d�WYd}~Sd}~wty�}z||_|�tj�|��IdHttj|d�WYd}~Sd}~ww|j t!vr�|S|j tj"u�r|�|j#�|j�s|j$�r|jdd�IdH|S|j tj%u�r-|�tj�|S|j tj&u�rB|j'�rB|�(|j#�IdHq|j tj)u�rN|j'�rNq|S)	Nr�Tz+Concurrent call to receive() is not allowedrzWebSocket connection is closed.F)r�)r�)*rRr�rqrXrSrUr7rrTrr�rar�rYrr�r�r#r�OKrVr�rr�CLOSEDrr�r�r�rZrr�r�r!r�r�rr�CLOSINGr�rsr�r�)rDrarbrr�rErErFr_s��


(����������
	���rac�rrBrErrErErF�receive_str�rzWebSocketResponse.receive_strc�rrBrErrErErFr�rc�rrBrErrErErFr�rc�sD�|�|�IdH}|jtjurtd|j�d|j�d���tt|j�S)zrReceive TEXT message.

        Returns str when decode_text=True (default), bytes when decode_text=False.
        N�Received message �:z is not WSMsgType.TEXT)rr�rr�rr�rrN�rDrarrErErFr�s��c�sD�|�|�IdH}|jtjurtd|j�d|j�d���tt|j�S)Nrr
z is not WSMsgType.BINARY)rr�rr�rr�rr�rrErErF�
receive_bytes�s��zWebSocketResponse.receive_bytes.)�loadsrarc�rrBrE�rDrrarErErF�receive_json���zWebSocketResponse.receive_jsonc�rrBrErrErErFr�rc�rrBrErrErErFr�rc�s�|j|d�IdH}||�S)Nr
)r)rDrrar�rErErFr�s�c�s
�td��)Nz"Cannot call .write() for websocket)r�)rDr�rErErF�write�s�zWebSocketResponse.writecCs|SrBrErCrErErF�	__aiter__�szWebSocketResponse.__aiter__c�rrBrErCrErErF�	__anext__�rzWebSocketResponse.__anext__c�rrBrErCrErErFr�rc�rrBrErCrErErFr�rc�s.�|��IdH}|jtjtjtjfvrt�|SrB)rr�rr�r	r�StopAsyncIteration)rDrrErErFrs
�cCs,d|_|��|jdurt|j|�dSdSr�)rTrrRrr�rErErF�_cancel	s

�zWebSocketResponse._cancel)r@N)r�r�r@NrB)r�)grIrJrKrOrLrMrPrNrQrrRr
rSrTrU�intrVrWr�ZAbstractEventLooprXrYZFuturerZ�
BaseExceptionr[�floatr\ZTimerHandler]r^r�r_r`�Handlerrrnrr}r�r�r�r�r�r�r�r�r)rr��tupler�r�r�r5r��propertyr�r�r�r�rgrr�r�r�r�r�rr�r�r��jsonr�r&r�r$r�r�rrr�rr�r�r	rrrrrr%rrrr0rr3rrr�
__classcell__rErErzrFr4Vs
�������	�
���
�







)


�
�T���
�

����
�	
�����
�����
�

����
�7
��������������
�K������������ ���������������
���
�	������r4)Qr�r�r�r�rr��collections.abcrr�typingrrrrrr	�attrZ	multidictr
r�rZ_websocket.readerr
�abcrZclient_exceptionsrZhelpersrrrr�httprrrrrrrrrrrrr Zhttp_websocketr!�logr"Zstreamsr#Ztypedefsr$r%r&Zweb_exceptionsr'r(Zweb_requestr)Zweb_responser*r�r-Ztyping_extensionsr0r1r�r�r�r3�__all__r7rrMrLr8�sr5r4rErErErF�<module>sR
 <