Your IP : 216.73.216.213


Current Path : /opt/alt/python35/lib64/python3.5/site-packages/aiohttp/__pycache__/
Upload File :
Current File : //opt/alt/python35/lib64/python3.5/site-packages/aiohttp/__pycache__/web_ws.cpython-35.pyc



���ZZ9�@smddlZddlZddlZddlZddlZddlZddlZddlmZddl	m
Z
ddlmZm
Z
ddlmZmZmZmZmZmZmZmZmZmZddlmZddlmZdd	lmZmZm Z dd
l!m"Z"dZ#dZ$ej%dddd�Gdd�d��Z&Gdd�de"�Z'dS)�N)�CIMultiDict�)�hdrs)�
call_later�
set_result)
�WS_CLOSED_MESSAGE�WS_CLOSING_MESSAGE�WS_KEY�WebSocketError�WebSocketReader�WebSocketWriter�	WSMessage�	WSMsgType�
ws_ext_gen�ws_ext_parse)�	ws_logger)�FlowControlDataQueue)�HTTPBadRequest�
HTTPException�HTTPMethodNotAllowed)�StreamResponse�WebSocketResponse�WebSocketReadyr��frozenT�slotsc@s@eZdZejde�Zejde�Zdd�Z	dS)r�typecCs|jS)N)�ok)�self�r�A/opt/alt/python35/lib64/python3.5/site-packages/aiohttp/web_ws.py�__bool__ szWebSocketReady.__bool__N)
�__name__�
__module__�__qualname__�attr�ib�boolr�str�protocolr!rrrr rscs�eZdZddddddddddd	fd
d�fdd�Zd
d�Zdd�Zdd�Zdd�Z�fdd�Zdd�Z	dd�Z
dd�Zdd�Ze
dd ��Ze
d!d"��Ze
d#d$��Ze
d%d&��Zd'd(�Zd)d*d+�Zd)d,d-�Zdd.d/�Zdd0d1�Zdd2ejd3d4�Zd5d6�Zd7d8d9d:d;d<�Zdd=d>�Zddd?d@�ZdddAdB�ZdCejdddDdE�Z dFdG�Z!dHdI�Z"dJdK�Z#�S)Lr�timeoutg$@�receive_timeoutN�	autocloseT�autoping�	heartbeat�	protocols�compresscs�t�jdd�||_d|_d|_d|_d|_d|_d|_d|_	d|_
d|_d|_||_
||_||_||_||_d|_|dk	r�|d|_d|_||_dS)N�status�eFrg@)�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/r0)�	__class__rr r4&s,																	
	zWebSocketResponse.__init__cCsN|jdk	r%|jj�d|_|jdk	rJ|jj�d|_dS)N)rG�cancelrE)rrrr �_cancel_heartbeatAs
	
z#WebSocketResponse._cancel_heartbeatcCs;|j�|jdk	r7t|j|j|j�|_dS)N)rKrDr�_send_heartbeatr=rE)rrrr �_reset_heartbeatJs
z"WebSocketResponse._reset_heartbeatcCsd|jdk	r`|jr`|jj�|jdk	rB|jj�t|j|j|j	�|_dS)N)
rDr9r7�pingrGrJr�_pong_not_receivedrFr=)rrrr rLQs

z!WebSocketResponse._send_heartbeatcCsV|jdk	rR|jjdk	rRd|_d|_tj�|_|jjj�dS)NTi�)Z_req�	transportr9r<�asyncio�TimeoutErrorr?�close)rrrr rOZs
!		z$WebSocketResponse._pong_not_receivedc�sh|jdk	r|jS|j|�\}}t�j|�IdH}|j|||�|j�IdH|S)N)�_payload_writer�
_pre_startr3�prepare�_post_start�drain)r�requestr)�writerZpayload_writer)rIrr rVaszWebSocketResponse.preparecCs�|j}|jtjkr3t|jtjg��d|jtjd�j�j�kr~t	ddj
|jtj����d|jtjd�j�kr�t	ddj
|jtj����d}tj|kr8dd�|tjj
d	�D�}x:|D]}||jkr|}PqWtjd
||j�|jtjd�}|dkrqt	ddj
|���|jtj�}y>|s�ttj|��dkr�t	ddj
|���Wn0tjk
r�t	ddj
|��d�YnXtjtj|j�t�j��j�}ttjdtjdtj dtj!|i�}	d}
|j"}|r�|jtj#�}t$|dd�\}}
|r�t%d|ddd|
�}
|
|	tj#<|r�||	tj<|	|||
fS)NZ	websocket��textz@No WebSocket UPGRADE hdr: {}
 Can "Upgrade" only to "WebSocket".�upgradezNo CONNECTION upgrade hdr: {}cSs"g|]}t|j���qSr)r(�strip)�.0�protorrr �
<listcomp>~s	z0WebSocketResponse._handshake.<locals>.<listcomp>�,u8Client protocols %r don’t overlap server-known ones %r�13�8�7zUnsupported version: {}�zHandshake error: {!r}�chunkedFZisserverTr0Zserver_notakeover)rcrdre)&�headers�methodrZMETH_GETr�getZUPGRADE�lowerr^r�formatZ
CONNECTIONZSEC_WEBSOCKET_PROTOCOL�splitr5r�warningZSEC_WEBSOCKET_VERSIONZSEC_WEBSOCKET_KEY�len�base64�	b64decode�binascii�Error�	b64encode�hashlib�sha1�encoder	�digest�decoderZTRANSFER_ENCODINGZSEC_WEBSOCKET_ACCEPTrHZSEC_WEBSOCKET_EXTENSIONSrr)rrYrhr)Z
req_protocolsr`�version�keyZ
accept_valZresponse_headers�
notakeoverr0�
extensionsZ
enabledextrrr �
_handshakelsh	'!	

"(				

zWebSocketResponse._handshakecCs�|j|_|j|�\}}}}|j�|jd�|jj|�|j�||_t	|j
|j
jd|d|�}||fS)Nr2r0r|)�loopr=r~rMZ
set_statusrh�updateZforce_closerHr�	_protocolrP)rrYrhr)r0r|rZrrr rU�s


			zWebSocketResponse._pre_startcCsi||_||_t|jddd|j�|_|jjt|jd|j	��|jj
d�dS)N�limit�rfrr0Fi)r6r7rr�r=r8r)Z
set_parserrrHZ
keep_alive)rrYr)rZrrr rW�s		zWebSocketResponse._post_startcCsm|jdk	rtd��y|j|�\}}}}Wntk
r[tdd�SYnXtd|�SdS)NzAlready startedFT)r7�RuntimeErrorr~rr)rrY�_r)rrr �can_prepare�s
zWebSocketResponse.can_preparecCs|jS)N)r9)rrrr �closed�szWebSocketResponse.closedcCs|jS)N)r<)rrrr �
close_code�szWebSocketResponse.close_codecCs|jS)N)r6)rrrr �ws_protocol�szWebSocketResponse.ws_protocolcCs|jS)N)rH)rrrr r0�szWebSocketResponse.compresscCs|jS)N)r?)rrrr �	exception�szWebSocketResponse.exception�bc�s4|jdkrtd��|jj|�IdHdS)NzCall .prepare() first)r7r�rN)r�messagerrr rN�szWebSocketResponse.pingc�s4|jdkrtd��|jj|�IdHdS)NzCall .prepare() first)r7r��pong)rr�rrr r��szWebSocketResponse.pongc�se|jdkrtd��t|t�s@tdt|���|jj|ddd|�IdHdS)NzCall .prepare() firstzdata argument must be str (%r)�binaryFr0)r7r��
isinstancer(�	TypeErrorr�send)r�datar0rrr �send_str�s
zWebSocketResponse.send_strc�sn|jdkrtd��t|tttf�sItdt|���|jj|ddd|�IdHdS)NzCall .prepare() firstz#data argument must be byte-ish (%r)r�Tr0)	r7r�r��bytes�	bytearray�
memoryviewr�rr�)rr�r0rrr �
send_bytes�szWebSocketResponse.send_bytes�dumpsc�s"|j||�d|�IdHdS)Nr0)r�)rr�r0r�rrr �	send_jsonszWebSocketResponse.send_jsonc�sD|jr
dS|jdkr(td��|j�IdHd|_dS)NzResponse has not been startedT)Z	_eof_sentrTr�rS)rrrr �	write_eof	s	zWebSocketResponse.write_eof�codei�r��c�s�|jdkrtd��|j�|jdk	r]|jr]|jjtd�|jIdH|js�d|_y)|jj||�|j	j
�IdHWndtjtj
fk
r�d|_�Yn;tk
r�}zd|_||_dSWYdd}~XnX|jrdSy;tj|jd|j��|jj�IdH}WdQRXWn[tjk
rjd|_�Yn;tk
r�}zd|_||_dSWYdd}~XnX|jtjkr�|j|_dSd|_tj
�|_dSdSdS)NzCall .prepare() firstrTi�rF)r7r�rKr>r9r8Z	feed_datarrSrTrXrQ�CancelledErrorrRr<�	Exceptionr?r:�
async_timeoutr*r@r=�readrr�CLOSEr�)rr�r��exc�msgrrr rSsJ
										zWebSocketResponse.closec�s�|jdkrtd��x�|jdk	r9td��|jrp|jd7_|jtkrltd��tS|jr}tSy�|j	j
�|_zKtj|p�|j
d|j	��|jj�IdH}WdQRX|j�Wd|j}t|d�d|_XWn�tjtjfk
r-d|_�Yn�tk
r�}z<|j|_|jd|j�IdHttj|d�SWYdd}~Xnbtk
r�}zB||_d|_d|_|j�IdHttj|d�SWYdd}~XnX|jtjkr6d|_|j|_|jr�|j r�|j�IdHnr|jtj!krTd|_nT|jtj"kr�|j#r�|j$|j�IdHqn|jtj%kr�|j#r�q|SWdS)	NzCall .prepare() firstz+Concurrent call to receive() is not allowedrzWebSocket connection is closed.rTi�r�)&r8r�r>r9r;�THRESHOLD_CONNLOST_ACCESSrr:rr=Z
create_futurer�r*rAr�rMrrQr�rRr<r
r�rSr
r�ERRORr�r?rr�r�rB�CLOSINGZPINGrCr�ZPONG)rr*r��waiterr�rrr �receiveCsb				
	%			&	zWebSocketResponse.receivec�sK|j|�IdH}|jtjkrDtdj|j|j���|jS)Nz.Received message {}:{!r} is not WSMsgType.TEXT)r�rr�TEXTr�rlr�)rr*r�rrr �receive_str|szWebSocketResponse.receive_strc�sK|j|�IdH}|jtjkrDtdj|j|j���|jS)Nz%Received message {}:{!r} is not bytes)r�rrZBINARYr�rlr�)rr*r�rrr �
receive_bytes�szWebSocketResponse.receive_bytes�loadsc�s!|jd|�IdH}||�S)Nr*)r�)rr�r*r�rrr �receive_json�szWebSocketResponse.receive_jsonc�std��dS)Nz"Cannot call .write() for websocket)r�)rr�rrr �write�szWebSocketResponse.writecCs|S)Nr)rrrr �	__aiter__�szWebSocketResponse.__aiter__c�s<|j�IdH}|jtjtjtjfkr8t�|S)N)r�rrr�r�ZCLOSED�StopAsyncIteration)rr�rrr �	__anext__�szWebSocketResponse.__anext__)$r"r#r$r4rKrMrLrOrVr~rUrWr��propertyr�r�r�r0r�rNr�r�r��jsonr�r�r�rSr�r�r�r�r�r�r�r�rr)rIr r$s@		F

	19)rrr)(rQrprrrur�r�r%Z	multidictrr[r�helpersrr�httprrr	r
rrr
rrr�logrZstreamsrZweb_exceptionsrrrZweb_responser�__all__r��srrrrrr �<module>s$F+