Viewing File: /opt/alt/python35/lib64/python3.5/site-packages/aiohttp/__pycache__/web_ws.cpython-35.opt-1.pyc



ZZ9@smddlZddlZddlZddlZddlZddlZddlZddlmZddl	m
Z
ddlmZm
Z
ddlmZmZmZmZmZmZmZmZmZmZddlmZddlmZdd	lmZmZm Z dd
l!m"Z"dZ#dZ$ej%ddddGdddZ&Gddde"Z'dS)N)CIMultiDict)hdrs)
call_later
set_result)
WS_CLOSED_MESSAGEWS_CLOSING_MESSAGEWS_KEYWebSocketErrorWebSocketReaderWebSocketWriter	WSMessage	WSMsgType
ws_ext_genws_ext_parse)	ws_logger)FlowControlDataQueue)HTTPBadRequest
HTTPExceptionHTTPMethodNotAllowed)StreamResponseWebSocketResponseWebSocketReadyrfrozenTslotsc@s@eZdZejdeZejdeZddZ	dS)rtypecCs|jS)N)ok)selfr
/web_ws.py__bool__ szWebSocketReady.__bool__N)
__name__
__module____qualname__attrZibboolrstrprotocolr!rrrr rscseZdZddddddddddd	fd
dfddZd
dZddZddZddZfddZddZ	ddZ
ddZddZe
dd Ze
d!d"Ze
d#d$Ze
d%d&Zd'd(Zd)d*d+Zd)d,d-Zdd.d/Zdd0d1Zdd2ejd3d4Zd5d6Zd7d8d9d:d;d<Zdd=d>Zddd?d@ZdddAdBZdCejdddDdEZ dFdGZ!dHdIZ"dJdKZ#S)Lrtimeoutg$@receive_timeoutN	autocloseTautoping	heartbeat	protocolscompresscstjdd||_d|_d|_d|_d|_d|_d|_d|_	d|_
d|_d|_||_
||_||_||_||_d|_|dk	r|d|_d|_||_dS)NstatuseFrg@)super__init__
_protocols_ws_protocol_writer_reader_closed_closing
_conn_lost_close_code_loop_waiting
_exception_timeout_receive_timeout
_autoclose	_autoping
_heartbeat
_heartbeat_cb_pong_heartbeat_pong_response_cb	_compress)rr)r*r+r,r-r.r/)	__class__rr r3&s,																	
	zWebSocketResponse.__init__cCsN|jdk	r%|jjd|_|jdk	rJ|jjd|_dS)N)rFcancelrD)rrrr _cancel_heartbeatAs
	
z#WebSocketResponse._cancel_heartbeatcCs;|j|jdk	r7t|j|j|j|_dS)N)rJrCr_send_heartbeatr<rD)rrrr _reset_heartbeatJs
z"WebSocketResponse._reset_heartbeatcCsd|jdk	r`|jr`|jj|jdk	rB|jjt|j|j|j	|_dS)N)
rCr8r6pingrFrIr_pong_not_receivedrEr<)rrrr rKQs

z!WebSocketResponse._send_heartbeatcCsV|jdk	rR|jjdk	rRd|_d|_tj|_|jjjdS)NTi)Z_req	transportr8r;asyncioTimeoutErrorr>close)rrrr rNZs
!		z$WebSocketResponse._pong_not_receivedcsh|jdk	r|jS|j|\}}tj|IdH}|j||||jIdH|S)N)_payload_writer
_pre_startr2prepare_post_startdrain)rrequestr(writerZpayload_writer)rHrr rUaszWebSocketResponse.preparecCs|j}|jtjkr3t|jtjgd|jtjdjjkr~t	ddj
|jtjd|jtjdjkrt	ddj
|jtjd}tj|kr8dd|tjj
d	D}x:|D]}||jkr|}PqWtjd
||j|jtjd}|dkrqt	ddj
||jtj}y>|sttj|dkrt	ddj
|Wn0tjk
rt	ddj
|dYnXtjtj|jtjj}ttjdtjdtj dtj!|i}	d}
|j"}|r|jtj#}t$|dd\}}
|rt%d|ddd|
}
|
|	tj#<|r||	tj<|	|||
fS)NZ	websockettextz@No WebSocket UPGRADE hdr: {}
 Can "Upgrade" only to "WebSocket".ZupgradezNo CONNECTION upgrade hdr: {}cSs"g|]}t|jqSr)r'strip).0protorrr 
<listcomp>~s	z0WebSocketResponse._handshake.<locals>.<listcomp>,u8Client protocols %r don’t overlap server-known ones %r1387zUnsupported version: {}zHandshake error: {!r}ZchunkedFZisserverTr/Zserver_notakeover)rarbrc)&headersmethodrZMETH_GETrgetZUPGRADElowerr\rformatZ
CONNECTIONZSEC_WEBSOCKET_PROTOCOLsplitr4rwarningZSEC_WEBSOCKET_VERSIONZSEC_WEBSOCKET_KEYlenbase64Z	b64decodebinasciiErrorZ	b64encodehashlibsha1encoder	digestdecoderZTRANSFER_ENCODINGZSEC_WEBSOCKET_ACCEPTrGZSEC_WEBSOCKET_EXTENSIONSrr)rrXrer(Z
req_protocolsr^versionkeyZ
accept_valZresponse_headers
notakeoverr/
extensionsZ
enabledextrrr 
_handshakelsh	'!	

"(				

zWebSocketResponse._handshakecCs|j|_|j|\}}}}|j|jd|jj||j||_t	|j
|j
jd|d|}||fS)Nr1r/rw)loopr<ryrLZ
set_statusreupdateZforce_closerGr	_protocolrO)rrXrer(r/rwrYrrr rTs


			zWebSocketResponse._pre_startcCsi||_||_t|jddd|j|_|jjt|jd|j	|jj
ddS)Nlimitrdrzr/Fi)r5r6rr|r<r7r(Z
set_parserrrGZ
keep_alive)rrXr(rYrrr rVs		zWebSocketResponse._post_startcCsm|jdk	rtdy|j|\}}}}Wntk
r[tddSYnXtd|SdS)NzAlready startedFT)r6RuntimeErrorryrr)rrX_r(rrr can_prepares
zWebSocketResponse.can_preparecCs|jS)N)r8)rrrr closedszWebSocketResponse.closedcCs|jS)N)r;)rrrr 
close_codeszWebSocketResponse.close_codecCs|jS)N)r5)rrrr ws_protocolszWebSocketResponse.ws_protocolcCs|jS)N)rG)rrrr r/szWebSocketResponse.compresscCs|jS)N)r>)rrrr 	exceptionszWebSocketResponse.exceptionbcs4|jdkrtd|jj|IdHdS)NzCall .prepare() first)r6rrM)rmessagerrr rMszWebSocketResponse.pingcs4|jdkrtd|jj|IdHdS)NzCall .prepare() first)r6rpong)rrrrr rszWebSocketResponse.pongcse|jdkrtdt|ts@tdt||jj|ddd|IdHdS)NzCall .prepare() firstzdata argument must be str (%r)binaryFr/)r6r
isinstancer'	TypeErrorrsend)rdatar/rrr send_strs
zWebSocketResponse.send_strcsn|jdkrtdt|tttfsItdt||jj|ddd|IdHdS)NzCall .prepare() firstz#data argument must be byte-ish (%r)rTr/)	r6rrbytes	bytearray
memoryviewrrr)rrr/rrr 
send_bytesszWebSocketResponse.send_bytesdumpscs"|j||d|IdHdS)Nr/)r)rrr/rrrr 	send_jsonszWebSocketResponse.send_jsoncsD|jr
dS|jdkr(td|jIdHd|_dS)NzResponse has not been startedT)Z	_eof_sentrSrrR)rrrr 	write_eof	s	zWebSocketResponse.write_eofcodeircs|jdkrtd|j|jdk	r]|jr]|jjtd|jIdH|jsd|_y)|jj|||j	j
IdHWndtjtj
fk
rd|_Yn;tk
r}zd|_||_dSWYdd}~XnX|jrdSy;tj|jd|j|jjIdH}WdQRXWn[tjk
rjd|_Yn;tk
r}zd|_||_dSWYdd}~XnX|jtjkr|j|_dSd|_tj
|_dSdSdS)NzCall .prepare() firstrTirzF)r6rrJr=r8r7Z	feed_datarrRrSrWrPCancelledErrorrQr;	Exceptionr>r9
async_timeoutr)r?r<readrrCLOSEr)rrrexcmsgrrr rRsJ
										zWebSocketResponse.closecs|jdkrtdx|jdk	r9td|jrp|jd7_|jtkrltdtS|jr}tSy|j	j
|_zKtj|p|j
d|j	|jjIdH}WdQRX|jWd|j}t|dd|_XWntjtjfk
r-d|_Yntk
r}z<|j|_|jd|jIdHttj|dSWYdd}~Xnbtk
r}zB||_d|_d|_|jIdHttj|dSWYdd}~XnX|jtjkr6d|_|j|_|jr|j r|jIdHnr|jtj!krTd|_nT|jtj"kr|j#r|j$|jIdHqn|jtj%kr|j#rq|SWdS)	NzCall .prepare() firstz+Concurrent call to receive() is not allowedrzWebSocket connection is closed.rzTir)&r7rr=r8r:THRESHOLD_CONNLOST_ACCESSrr9rr<Z
create_futurerr)r@rrLrrPrrQr;r
rrRr
rERRORrr>rrrrACLOSINGZPINGrBrZPONG)rr)rwaiterrrrr receiveCsb				
	%			&	zWebSocketResponse.receivecsK|j|IdH}|jtjkrDtdj|j|j|jS)Nz.Received message {}:{!r} is not WSMsgType.TEXT)rrrZTEXTrrir)rr)rrrr receive_str|szWebSocketResponse.receive_strcsK|j|IdH}|jtjkrDtdj|j|j|jS)Nz%Received message {}:{!r} is not bytes)rrrZBINARYrrir)rr)rrrr 
receive_bytesszWebSocketResponse.receive_bytesloadscs!|jd|IdH}||S)Nr))r)rrr)rrrr receive_jsonszWebSocketResponse.receive_jsoncstddS)Nz"Cannot call .write() for websocket)r)rrrrr writeszWebSocketResponse.writecCs|S)Nr)rrrr 	__aiter__szWebSocketResponse.__aiter__cs<|jIdH}|jtjtjtjfkr8t|S)N)rrrrrZCLOSEDStopAsyncIteration)rrrrr 	__anext__szWebSocketResponse.__anext__)$r"r#r$r3rJrLrKrNrUryrTrVrpropertyrrrr/rrMrrrjsonrrrrRrrrrrrrrrr)rHr r$s@		F

	19)rrr)(rPrmrnrprrr%Z	multidictrrZrZhelpersrrZhttprrr	r
rrr
rrrlogrZstreamsrZweb_exceptionsrrrZweb_responser__all__rsrrrrrr <module>s$F+	
Back to Directory File Manager