Viewing File: /opt/alt/python38/lib64/python3.8/site-packages/aiohttp/__pycache__/http_websocket.cpython-38.pyc

U

'7`
b@sjdZddlZddlZddlZddlZddlZddlZddlZddlm	Z	ddl
mZddlm
Z
mZmZmZmZmZddlmZddlmZdd	lmZd
ZGddde	Zd
deDZGddde	ZdZedjZedjZ edj!Z"edj#Z$edj#Z%edj#Z&edj#Z'dZ(dZ)e*ddddgZ+Gddde+Z,e,ej-ddZ.e,ej/ddZ0Gdd d e1Z2Gd!d"d"e1Z3ej4Z5d#d$e6d%DZ7e8e9dd&d'd(Z:ere:Z;n0zdd)l<m=Z=e=Z;Wne>k
re:Z;YnXe8ddd*d*gZ?e@d+ZAe@d,ZBd;eeCeDeeEeDfd.d/d0ZFd<eEeDeDeCd2d3d4ZGGd5d6d6e	ZHGd7d8d8ZIGd9d:d:ZJdS)=z%WebSocket protocol versions 13 and 8.N)IntEnum)Struct)AnyCallableListOptionalTupleUnion)BaseProtocol)
NO_EXTENSIONS)	DataQueue)	WS_CLOSED_MESSAGEWS_CLOSING_MESSAGEWS_KEYWebSocketReaderWebSocketWriter	WSMessageWebSocketError	WSMsgTypeWSCloseCodec@s8eZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dS)
riiiiiiiiiiN)__name__
__module____qualname__ZOKZ
GOING_AWAYPROTOCOL_ERRORZUNSUPPORTED_DATAINVALID_TEXTZPOLICY_VIOLATIONMESSAGE_TOO_BIGZMANDATORY_EXTENSIONZINTERNAL_ERRORZSERVICE_RESTARTZTRY_AGAIN_LATERrrI/opt/alt/python38/lib64/python3.8/site-packages/aiohttp/http_websocket.pyrsrcCsh|]}t|qSr)int).0irrr	<setcomp>-sr#c@sPeZdZdZdZdZdZdZdZdZ	dZ
d	ZeZeZ
eZeZeZe	Ze
ZeZd
S)rrr
	
iiN)rrrCONTINUATIONTEXTBINARYPINGPONGCLOSECLOSINGCLOSEDZERRORtextbinarypingpongcloseclosingclosederrorrrrrr0s"rs$258EAFA5-E914-47DA-95CA-C5AB0DC85B11z!Hz!Qz!BBz!BBHz!BBQi@_WSMessageBasetypedataZextrac@s.eZdZejdeegefedddZdS)r)loads)r=returncCs
||jS)zAReturn parsed JSON data.

        .. versionadded:: 0.22
        )r<)selfr=rrrjsonZszWSMessage.jsonN)rrrr@r=rrrrrrrYsrcs8eZdZdZeeddfddZedddZZS)	rz WebSocket protocol parser error.Ncodemessager>cs||_t||dSN)rBsuper__init__r?rBrC	__class__rrrFiszWebSocketError.__init__r>cCs
|jdS)Nr
)argsr?rrr__str__mszWebSocketError.__str__)	rrr__doc__r strrFrM
__classcell__rrrHrrfsrc@seZdZdZdS)WSHandshakeErrorz#WebSocket protocol handshake error.N)rrrrNrrrrrQqsrQcs&g|]tfddtdDqS)c3s|]}|AVqdSrDr)r!abrr	<genexpr>ysz<listcomp>.<genexpr>r()bytesrange)r!rrSr
<listcomp>ysrXr()maskr<r>cCst|tst|t|dks&t||rdd|D\}}}}|ddd||ddd<|ddd||ddd<|ddd||ddd<|ddd||ddd<dS)awWebsocket masking function.

    `mask` is a `bytes` object of length 4; `data` is a `bytearray`
    object of any length. The contents of `data` are masked with `mask`,
    as specified in section 5.3 of RFC 6455.

    Note that this function mutates the `data` argument.

    This pure-python implementation may be replaced by an optimized
    version when available.

    css|]}t|VqdSrD)
_XOR_TABLE)r!nrrrrUsz)_websocket_mask_python.<locals>.<genexpr>Nr
r$)
isinstance	bytearrayAssertionErrorlen	translate)rYr<rRrTcdrrr_websocket_mask_python|s
re)_websocket_mask_cythonz^(?:;\s*(?:(server_no_context_takeover)|(client_no_context_takeover)|(server_max_window_bits(?:=(\d+))?)|(client_max_window_bits(?:=(\d+))?)))*$zpermessage-deflate([^,]+)?F)extstrisserverr>cCs|sdSd}d}t|D]}|d}|s4d}qt|}|rd}|r|drxt|d}|dksr|dkrxd}q|drd}qq|d	rt|d	}|dks|dkrtd
|drd}qq|std|dq||fS)
N)rFrFr
rZr%TzInvalid window sizer$z#Extension for deflate not supported)_WS_EXT_RE_SPLITfinditergroup
_WS_EXT_REmatchr rQ)rhricompress
notakeoverZextZdefextrprrrws_ext_parses>





rsrj)rqriserver_notakeoverr>cCs^|dks|dkrtddg}|s,|d|dkrF|dt||rT|dd|S)	Nr%rjzCCompress wbits must between 9 and 15, zlib does not support wbits=8zpermessage-deflateZclient_max_window_bitszserver_max_window_bits=Zserver_no_context_takeoverz; )
ValueErrorappendrOjoin)rqrirtZ
enabledextrrr
ws_ext_gens

rxc@seZdZdZdZdZdZdS)
WSParserStater
r$r]rZN)rrrREAD_HEADERREAD_PAYLOAD_LENGTHREAD_PAYLOAD_MASKREAD_PAYLOADrrrrrysryc@seZdZdeeeeddddZddddZe	e
ee	fd	d
dZe	e
ee	fd	dd
Ze	e
e
eeeeeefdddZdS)rTN)queuemax_msg_sizerqr>cCsp||_||_d|_t|_tj|_d|_d|_	d|_
t|_d|_d|_
d|_d|_d|_d|_d|_||_dS)NFr)r~
_max_msg_size_excr__partialryrz_state_opcode
_frame_fin
_frame_opcode_frame_payload_tail	_has_mask_frame_mask_payload_length_payload_length_flag_compressed_decompressobj	_compress)r?r~rrqrrrrFs"zWebSocketReader.__init__rJcCs|jdSrD)r~feed_eofrLrrrrszWebSocketReader.feed_eofr<r>c
CsZ|jrd|fSz||WStk
rT}z||_|j|WYdSd}~XYnXdS)NT)Tr)r
_feed_data	Exceptionr~Z
set_exception)r?r<excrrr	feed_dataszWebSocketReader.feed_datac
Cs||D]v\}}}}|r4|js4tjtjd|_|tjkrt|dkrt|ddd}|dkr|t	krt
tjd|z|dd
d}Wn0tk
r}zt
tjd|W5d}~XYnXttj||}	n2|rt
tjd|d	|d	|nttjdd
}	|j|	dq
|tjkrF|jttj|d
t|q
|tjkrp|jttj|d
t|q
|tjtjfkr|jdkrt
tjd|q
|s|tjkr||_|j||jrt|j|jkrt
tjdt|j|jq
|jr$|tjkr$t
tjd
||tjkrL|jdk	s@t|j}d|_|j||jrt|j|jkrt
tjdt|j|j|r|jt|j |j|j}
|jj!rt|jj!}t
tjd|j||jn
t"|j}
|j#|tjkrfz*|

d}|jttj|d
t|Wn2tk
rb}zt
tjd|W5d}~XYnXq
|jttj|
d
t|
q
dS)N)wbitsr$rizInvalid close code: utf-8zInvalid UTF-8 text messagezInvalid close frame:  zUnexpected opcode=z Message size {} exceeds limit {}z<The opcode in non-fin frame is expected to be zero, got {!r}z-Decompressed message size {} exceeds limit {})Fr)$parse_framerzlibZ
decompressobjZ	MAX_WBITSrr.raUNPACK_CLOSE_CODEALLOWED_CLOSE_CODESrrrdecodeUnicodeDecodeErrorrrr~rr,r-r*r+rr)rextendrrformatr`_WS_DEFLATE_TRAILING
decompressZunconsumed_tailrVclear)
r?r<finopcodepayloadZ
compressedZ
close_codeZ
close_messagermsgZpayload_mergedleftr1rrrr#s
		



zWebSocketReader._feed_data)bufr>cCsg}|jr|j|d}|_d}t|}|jtjkrp||dkrt|||d}|d7}|\}}|d?d@}|d?d@}	|d?d@}
|d?d@}|d	@}|
s|s|	r|jsttjd
|dkr|dkrttjd|d?d@}
|d@}|dkr
|d
kr
ttjd|j	s|j
dkr0|	r(dnd|_
n|	rBttjd
t||_	||_t|
|_
||_tj|_nqt|jtjkr`|j}|dkr||dkrt|||d}|d7}t|d}||_|j
rtjntj|_nqtn||dkrD||dkrt|||d}|d7}t|d}||_|j
r4tjntj|_nqtn||_|j
rXtjntj|_|jtjkr||dkrt|||d|_|d7}tj|_nqt|jtjkr(|j}|j}||}||kr|||_|||d|}n$d|_|||||||}|jdkrt|j
rD|jdk	s8tt|j|||j	|j||j
ft|_tj|_q(qtq(||d|_|S)z&Return the next frame from the socket.rrr$r
rkrZrjz*Received frame with non-zero reserved bitsz!Received fragmented control frame}z5Control frame payload cannot be larger than 125 bytesNTF~r')rrarryrzrrrrrrboolrrrr{UNPACK_LEN2rr|r}UNPACK_LEN3rrrr`_websocket_maskrvr_)r?rZframesZ	start_posZ
buf_lengthr<Z
first_byteZsecond_byterZrsv1Zrsv2Zrsv3rZhas_maskZlengthrZ	chunk_lenrrrrs











zWebSocketReader.parse_frame)T)rrrr
rr rrFrrVrrrrrr_rrrrrrs|rc
@seZdZdeedddeeje	e
ee
e	ddddZde
e
ee
ddd	d
Ze
dddd
Zde
ddddZde
ddddZdeee
fe	ee
ddddZde
e
ddddZdS) rFr)use_masklimitrandomrqrrN)protocol	transportrrrrqrrr>cCsB||_||_||_|j|_||_||_d|_||_d|_d|_	dS)NFr)
rrr	randrangerqrr_closing_limit_output_size_compressobj)r?rrrrrrqrrrrrrF;szWebSocketWriter.__init__)rCrrqr>cs|jr|tj@stdd}|s&|jr|dkr|rFtjtj|d}n"|jsbtjtj|jd|_|j}||}||	|j
rtjntj}|
tr|dd}|dB}t|}|j}|rd}nd}|d	krtd|B|B||B}	n<|d
krtd|B|Bd	|B|}	ntd|B|Bd|B|}	|r|dd}
|
d
d}
t|}t|
|||	|
||jt|	t|
t|7_nLt|tkr||	||n||	||jt|	t|7_|j|jkrd|_|jIdHdS)<Send a frame over the websocket with message as its payload.!Cannot write to closing transportrr')levelrN@rr9rlrZZbig)rrr.ConnectionResetErrorrqrcompressobjZZ_BEST_SPEEDrflushrrZZ_FULL_FLUSHZZ_SYNC_FLUSHendswithrrar	PACK_LEN1	PACK_LEN2	PACK_LEN3rto_bytesr_r_writerMSG_SIZErrZ
_drain_helper)r?rCrrqZrsvrZ
msg_lengthrZmask_bitheaderrYrrr_send_frameQsX



$
zWebSocketWriter._send_framercCs,|jdks|jrtd|j|dS)Nr)rZ
is_closingrwrite)r?r<rrrrszWebSocketWriter._writer)rCr>cs,t|tr|d}||tjIdHdS)zSend pong message.rN)r^rOencoderrr-r?rCrrrr4s

zWebSocketWriter.pongcs,t|tr|d}||tjIdHdS)zSend ping message.rN)r^rOrrrr,rrrrr3s

zWebSocketWriter.ping)rCr2rqr>csJt|tr|d}|r0||tj|IdHn||tj|IdHdS)rrN)r^rOrrrr+r*)r?rCr2rqrrrsends


zWebSocketWriter.sendrrAcsDt|tr|d}z"|jt||tjdIdHW5d|_XdS)z<Close the websocket, sending the specified code and message.rT)rN)r^rOrrrPACK_CLOSE_CODErr.rGrrrr5s


zWebSocketWriter.close)N)r)r)FN)rr)rrr
DEFAULT_LIMITrZRandomrasyncioZ	Transportrr rrFrVrrrr4r3r	rOrr5rrrrr:sDA	
r)F)rjFF)KrNrcollectionsr@rresysrenumrstructrtypingrrrrrr	Z
base_protocolrZhelpersrZstreamsr
__all__rrrrunpack_fromrrunpackrpackrrrrrr
namedtupler:rr0rr/rrrrQ	byteorderZnative_byteorderrWr[rVr_rerZ
_websocketrfImportErrorrcompilerorlrOrr rsrxryrrrrrr<module>s~ 







	

 4@
Back to Directory File Manager