U '7`A@sBddlZddlZddlZddlZddlZddlmZmZmZm Z ddl Z ddl Z ddl m Z ddlmZddlmZddlmZmZddlmZmZmZmZmZmZmZmZmZmZdd l m!Z!dd l"m#Z#m$Z$dd l%m&Z&m'Z'dd l(m)Z)m*Z*dd l+m,Z,ddl-m.Z.dZ/dZ0e j1ddddGdddZ2Gddde.Z3dS)N)AnyIterableOptionalTuple) CIMultiDict)hdrs)AbstractStreamWriter) call_later set_result) WS_CLOSED_MESSAGEWS_CLOSING_MESSAGEWS_KEYWebSocketErrorWebSocketReaderWebSocketWriter WSMessage WSMsgType ws_ext_gen ws_ext_parse) ws_logger) EofStreamFlowControlDataQueue) JSONDecoder JSONEncoder)HTTPBadRequest HTTPException) BaseRequest)StreamResponse)WebSocketResponseWebSocketReadyrT)Z auto_attribsfrozenslotsc@s0eZdZUeed<eeed<edddZdS)r okprotocolreturncCs|jSN)r$selfr+A/opt/alt/python38/lib64/python3.8/site-packages/aiohttp/web_ws.py__bool__0szWebSocketReady.__bool__N)__name__ __module__ __qualname__bool__annotations__rstrr-r+r+r+r,r +s  r c seZdZdZdddddddddeeeeeeeeeee dd fd d Z dd d d Z dd ddZ dd ddZ dd ddZeedfdd ZeedeeefdddZeeeefdddZeeeddddZeeddd Zeed d!d"Zeee d d#d$Zeeed d%d&Zeed d'd(Zeed d)d*ZdWe dd,d-d.Z!dXe dd,d/d0Z"dYeeedd1d2d3Z#dZe eedd1d4d5Z$d[e%j&d6e'eee(dd7d8d9Z)dd d:d;Z*dd?d@Z+d\eee,dAdBdCZ-ddDeeedAdEdFZ.ddDeee dAdGdHZ/e%j0ddIe1eee'dJdKdLZ2e ddMdNdOZ3dd dPdQZ4e,d dRdSZ5eddTdUdVZ6Z7S)]rFg$@NTr+i@)timeoutreceive_timeout autocloseautoping heartbeat protocolscompress max_msg_size) r4r5r6r7r8r9r:r;r'c stjdd||_d|_d|_d|_d|_d|_d|_d|_ d|_ d|_ d|_ ||_ ||_||_||_||_d|_|dk r|d|_d|_||_||_dS)Ne)ZstatusFrg@)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 _max_msg_size) r*r4r5r6r7r8r9r:r; __class__r+r,r>8s.  zWebSocketResponse.__init__r&cCs8|jdk r|jd|_|jdk r4|jd|_dSr()rQcancelrOr)r+r+r,_cancel_heartbeat\s     z#WebSocketResponse._cancel_heartbeatcCs*||jdk r&t|j|j|j|_dSr()rWrNr _send_heartbeatrGrOr)r+r+r,_reset_heartbeates z"WebSocketResponse._reset_heartbeatcCsN|jdk rJ|jsJ|j|j|jdk r6|jt|j |j |j|_dSr() rNrCrGZ create_taskrApingrQrVr _pong_not_receivedrPr)r+r+r,rXms  z!WebSocketResponse._send_heartbeatcCs<|jdk r8|jjdk r8d|_d|_t|_|jjdS)NT)Z_req transportrCrFasyncio TimeoutErrorrIcloser)r+r+r,r[zs  z$WebSocketResponse._pong_not_received)requestr'cs\|jdk r|jS||\}}t|IdH}|dk ssz0WebSocketResponse._handshake..,u8Client protocols %r don’t overlap server-known ones %r)Z1387zUnsupported version: zHandshake error: FrT)isserver)r:rsZserver_notakeover)"headersgetrZUPGRADElowerrkrformatZ CONNECTIONZSEC_WEBSOCKET_PROTOCOLsplitr?rZwarningZSEC_WEBSOCKET_VERSIONZSEC_WEBSOCKET_KEYlenbase64Z b64decodebinasciiErrorZ b64encodehashlibZsha1encoderZdigestdecoderZSEC_WEBSOCKET_ACCEPTrRZSEC_WEBSOCKET_EXTENSIONSrr)r*rartr%Z req_protocolsrmversionkeyZ accept_valZresponse_headers notakeoverr: extensionsZ enabledextr+r+r, _handshakes        zWebSocketResponse._handshakecCsl|j|_||\}}}}|d|j||||_|jj}|dk sRt t |j|||d}||fS)Nr<)r:r) rGrZ set_statusrtupdateZ force_closerR _protocolr]rer)r*rartr%r:rr]rhr+r+r,rcs   zWebSocketResponse._pre_start)rar%rhr'cCsd||_||_||j}|dk s&tt|jd|d|_|j t |j|j |j d|j ddS)Niloopr:F)r@rArYrGrerrrBr%Z set_parserrrSrRZ keep_alive)r*rar%rhrr+r+r,rfs zWebSocketResponse._post_startcCsV|jdk rtdz||\}}}}Wntk rFtddYSXtd|SdS)NzAlready startedFT)rA RuntimeErrorrrr )r*ra_r%r+r+r, can_prepares zWebSocketResponse.can_preparecCs|jSr()rCr)r+r+r,closed szWebSocketResponse.closedcCs|jSr()rFr)r+r+r, close_code szWebSocketResponse.close_codecCs|jSr()r@r)r+r+r, ws_protocolszWebSocketResponse.ws_protocolcCs|jSr()rRr)r+r+r,r:szWebSocketResponse.compresscCs|jSr()rIr)r+r+r, exceptionszWebSocketResponse.exception)messager'cs(|jdkrtd|j|IdHdSNCall .prepare() first)rArrZr*rr+r+r,rZs zWebSocketResponse.pingcs(|jdkrtd|j|IdHdSr)rArpongrr+r+r,r!s zWebSocketResponse.pong)datar:r'csH|jdkrtdt|ts,tdt||jj|d|dIdHdS)Nrzdata argument must be str (%r)FZbinaryr:)rAr isinstancer3 TypeErrortypesendr*rr:r+r+r,send_str's   zWebSocketResponse.send_strcsN|jdkrtdt|tttfs2tdt||jj|d|dIdHdS)Nrz#data argument must be byte-ish (%r)Tr) rArrbytes bytearray memoryviewrrrrr+r+r, send_bytes.s  zWebSocketResponse.send_bytes)dumps)rr:rr'cs|j|||dIdHdS)Nr)r)r*rr:rr+r+r, send_json5szWebSocketResponse.send_jsoncs4|jr dS|jdkrtd|IdHd|_dS)NzResponse has not been startedT)Z _eof_sentrbrr`r)r+r+r, write_eof>s  zWebSocketResponse.write_eof)coder)rrr'c s|jdkrtd||j}|dk s,t|jdk rT|jsT|td|jIdH|jsd|_z8|j ||IdH|j }|dk st| IdHWnVt j t jfk rd|_Yn4tk r}zd|_||_WYdSd}~XYnX|jrdS|j}|dk stz0tj|j|jd|IdH}W5QRXWnTt j k rbd|_Yn6tk r}zd|_||_WYdSd}~XYnX|jtjkr|j|_dSd|_t |_dSdSdS)NrrTr\rF)rArrWrBrerHrCZ feed_datar r`rbrgr^CancelledErrorr_rF ExceptionrIrD async_timeoutr4rJrGreadrrCLOSEr)r*rrreaderrhexcmsgr+r+r,r`GsV      zWebSocketResponse.close)r4r'c sl|jdkrtd|j}|dk s$t|jdk r6td|jr`|jd7_|jtkr\tdtS|j rjt Szh| |_z>t j|p|j|jd|jIdH}W5QRX|W5|j}t |dd|_XWntjtjfk rd|_Yntk r,d|_|IdHttjddYStk r|}z2|j|_|j|jd IdHttj|dWYSd}~XYnVtk r}z6||_d|_ d|_|IdHttj|dWYSd}~XYnX|j tj!krd|_ |j"|_|jsh|j#rh|IdHnZ|j tj$kr$d|_ nD|j tj%krP|j&rP|'|j"IdHq$n|j tj(krh|j&rhq$|S) Nrz+Concurrent call to receive() is not allowedrzWebSocket connection is closed.Trr\r)r))rBrrGrerHrCrETHRESHOLD_CONNLOST_ACCESSr rDr Z create_futurer rr4rKrrYr^rr_rFrr`rrCLOSEDrrZERRORrrIrrrrLCLOSINGZPINGrMrZPONG)r*r4rZwaiterrrr+r+r,receive~sn       "$zWebSocketResponse.receiver4cs6||IdH}|jtjkr0td|j|j|jS)Nz.Received message {}:{!r} is not WSMsgType.TEXT)rrrZTEXTrrwrr*r4rr+r+r, receive_strs zWebSocketResponse.receive_strcs<||IdH}|jtjkr6td|jd|jd|jS)NzReceived message :z is not bytes)rrrZBINARYrrrr+r+r, receive_bytess zWebSocketResponse.receive_bytes)loadsr4)rr4r'cs|j|dIdH}||S)Nr)r)r*rr4rr+r+r, receive_jsonszWebSocketResponse.receive_json)rr'cs tddS)Nz"Cannot call .write() for websocket)r)r*rr+r+r,writeszWebSocketResponse.writecCs|Sr(r+r)r+r+r, __aiter__szWebSocketResponse.__aiter__cs,|IdH}|jtjtjtjfkr(t|Sr()rrrrrrStopAsyncIteration)r*rr+r+r, __anext__szWebSocketResponse.__anext__)rr'cCs|jdk r|j|dSr()rBZ set_exception)r*rr+r+r,_cancels zWebSocketResponse._cancel)r)r)N)N)N)N)8r.r/r0Z _length_checkfloatrr1rr3intr>rWrYrXr[rr rdrrrrcrfr rpropertyrrrr: BaseExceptionrrrZrrrjsonrrrrrr`rrrrrrrrrrr __classcell__r+r+rTr,r4s$    P     7?  r)4r^rzr{r}rtypingrrrrrattrZ multidictrrirabcr Zhelpersr r Zhttpr r rrrrrrrrlogrZstreamsrrZtypedefsrrZweb_exceptionsrrZ web_requestrZ web_responser__all__rsr rr+r+r+r,s.   0