Viewing File: /opt/alt/python35/lib64/python3.5/asyncio/__pycache__/selector_events.cpython-35.opt-2.pyc



]
@sdgZddlZddlZddlZddlZddlZddlZyddlZWnek
r{dZYnXddl	m
Z
ddl	mZddl	mZddl	m
Z
ddl	mZdd	l	mZdd
l	mZddl	mZddlmZdd
lmZddZeedrFddZnddZGddde
jZGdddejejZGdddeZGdddeZGdddeZ dS)BaseSelectorEventLoopN)base_events)compat)	constants)events)futures)	selectors)
transports)sslproto)	coroutine)loggercCsAy|j|}Wntk
r+dSYnXt|j|@SdS)NF)get_keyKeyErrorboolr)selectorfdeventkeyr4/opt/alt/python35/lib64/python3.5/selector_events.py_test_selector_event s

	rTCP_NODELAYcCs\|jtjtjhkrX|jtjkrX|jtjkrX|jtjtj	ddS)Nr)
familysocketAF_INETAF_INET6typeSOCK_STREAMprotoIPPROTO_TCP
setsockoptr)sockrrr_set_nodelay,sr#cCsdS)Nr)r"rrrr#2scs>eZdZdfddZdddddddZddd	d
dddddddZdd	d
dddddd
dZdddddZfddZddZ	ddZ
ddZddZddZ
ddZdddd d!Zdddd"d#Zeddd$d%Zd&d'Zd(d)Zd*d+Zd,d-Zd.d/Zd0d1Zd2d3Zd4d5Zd6d7Zd8d9Zd:d;Zd<d=Zd>d?Zed@dAZ dBdCZ!dDdEZ"dFdGZ#dHdIZ$dJdKZ%dLdMZ&dNdOZ'S)PrNcsatj|dkr%tj}tjd|jj||_|j	t
j|_dS)NzUsing selector: %s)
super__init__r	DefaultSelectorr
debug	__class____name__	_selector_make_self_pipeweakrefWeakValueDictionary_transports)selfr)r(rrr%<s
	
zBaseSelectorEventLoop.__init__extraservercCst||||||S)N)_SelectorSocketTransport)r/r"protocolwaiterr0r1rrr_make_socket_transportFsz,BaseSelectorEventLoop._make_socket_transportserver_sideFserver_hostnamec

Cs{tjs:|j||||d|d|d|d|Stj||||||}	t|||	d|d||	jS)Nr6r7r0r1)rZ_is_sslproto_available_make_legacy_ssl_transportZSSLProtocolr2Z_app_transport)
r/rawsockr3
sslcontextr4r6r7r0r1Zssl_protocolrrr_make_ssl_transportKs

z)BaseSelectorEventLoop._make_ssl_transportc	
Cs"t|||||||||	S)N)_SelectorSslTransport)	r/r9r3r:r4r6r7r0r1rrrr8Zsz0BaseSelectorEventLoop._make_legacy_ssl_transportcCst||||||S)N)_SelectorDatagramTransport)r/r"r3addressr4r0rrr_make_datagram_transportdsz.BaseSelectorEventLoop._make_datagram_transportcsh|jrtd|jr(dS|jtj|jdk	rd|jjd|_dS)Nz!Cannot close a running event loop)Z
is_runningRuntimeError	is_closed_close_self_piper$closer*)r/)r(rrrCis


zBaseSelectorEventLoop.closecCs
tdS)N)NotImplementedError)r/rrr_socketpairtsz!BaseSelectorEventLoop._socketpaircCsU|j|jj|jjd|_|jjd|_|jd8_dS)Nr)_remove_reader_ssockfilenorC_csock
_internal_fds)r/rrrrBws
	
	z&BaseSelectorEventLoop._close_self_pipecCsg|j\|_|_|jjd|jjd|jd7_|j|jj|jdS)NFr)rErGrIsetblockingrJ_add_readerrH_read_from_self)r/rrrr+s
z%BaseSelectorEventLoop._make_self_pipecCsdS)Nr)r/datarrr_process_self_datasz(BaseSelectorEventLoop._process_self_datacCs_xXy*|jjd}|sP|j|Wqtk
rDwYqtk
rVPYqXqWdS)Ni)rGrecvrOInterruptedErrorBlockingIOError)r/rNrrrrMs

z%BaseSelectorEventLoop._read_from_selfcCs[|j}|dk	rWy|jdWn.tk
rV|jrRtjdddYnXdS)Nsz3Fail to write a null byte into the self-pipe socketexc_infoT)rIsendOSError_debugr
r')r/Zcsockrrr_write_to_selfs	
	z$BaseSelectorEventLoop._write_to_selfdcCs,|j|j|j|||||dS)N)rLrH_accept_connection)r/protocol_factoryr"r:r1backlogrrr_start_servingsz$BaseSelectorEventLoop._start_servingcCs[xTt|D]F}yB|j\}}|jrGtjd||||jdWntttfk
rvdSYq
t	k
r}	z|	j
t
jt
jt
j
t
jfkr	|jddd|	d|i|j|j|jtj|j|||||nWYdd}	~	Xq
Xd|i}
|j|||
||}|j|q
WdS)Nz#%r got a new connection from %r: %rFmessagez&socket.accept() out of system resource	exceptionrpeername)rangeacceptrVr
r'rKrRrQConnectionAbortedErrorrUerrnoZEMFILEZENFILEZENOBUFSZENOMEMcall_exception_handlerrFrHZ
call_laterrZACCEPT_RETRY_DELAYr\_accept_connection2Zcreate_task)r/rZr"r:r1r[_connaddrexcr0rarrrrYs4		


z(BaseSelectorEventLoop._accept_connectionccs$d}d}y|}|j}|rZ|j|||d|ddd|d|}n$|j||d|d|d|}y
|EdHWn|jYnXWnytk
r}	zY|jr
ddd|	i}
|dk	r||
d	<|dk	r||
d
<|j|
WYdd}	~	XnXdS)Nr4r6Tr0r1r]z3Error on transport creation for incoming connectionr^r3	transport)
create_futurer;r5rC	ExceptionrVrd)r/rZrgr0r:r1r3rjr4ricontextrrrres4		

	

z)BaseSelectorEventLoop._accept_connection2cCsNy|j|}Wntk
r%Yn%X|jsJtdj||dS)Nz.File descriptor {!r} is used by transport {!r})r.r
is_closingr@format)r/rrjrrr_ensure_fd_no_transports
z-BaseSelectorEventLoop._ensure_fd_no_transportc	
Gs|jtj|||}y|jj|}Wn1tk
rh|jj|tj|dfYnSX|j|j	}\}}|jj
||tjB||f|dk	r|jdS)N)
_check_closedrHandler*rrregisterr	
EVENT_READrNmodifycancel)	r/rcallbackargshandlermaskreaderwriterrrrrLs


z!BaseSelectorEventLoop._add_readerc
Cs|jrdSy|jj|}Wntk
r>dSYn{X|j|j}\}}|tjM}|s|jj|n|jj	||d|f|dk	r|j
dSdSdS)NFT)rAr*rrrrNr	rt
unregisterrurv)r/rrrzr{r|rrrrFs
	
z$BaseSelectorEventLoop._remove_readerc	
Gs|jtj|||}y|jj|}Wn1tk
rh|jj|tjd|fYnSX|j|j	}\}}|jj
||tjB||f|dk	r|jdS)N)rqrrrr*rrrsr	EVENT_WRITErNrurv)	r/rrwrxryrrzr{r|rrr_add_writer(s


z!BaseSelectorEventLoop._add_writerc
Cs|jrdSy|jj|}Wntk
r>dSYn{X|j|j}\}}|tjM}|s|jj|n|jj	|||df|dk	r|j
dSdSdS)NFT)rAr*rrrrNr	r~r}rurv)r/rrrzr{r|rrr_remove_writer7s
	
z$BaseSelectorEventLoop._remove_writercGs |j||j|||S)N)rprL)r/rrwrxrrr
add_readerNs
z BaseSelectorEventLoop.add_readercCs|j||j|S)N)rprF)r/rrrr
remove_readerSs
z#BaseSelectorEventLoop.remove_readercGs |j||j|||S)N)rpr)r/rrwrxrrr
add_writerXs
z BaseSelectorEventLoop.add_writercCs|j||j|S)N)rpr)r/rrrr
remove_writer]s
z#BaseSelectorEventLoop.remove_writercCsM|jr'|jdkr'td|j}|j|d|||S)Nrzthe socket must be non-blockingF)rV
gettimeout
ValueErrorrk
_sock_recv)r/r"nfutrrr	sock_recvbs
	zBaseSelectorEventLoop.sock_recvcCs|j}|r|j||jr/dSy|j|}Wnhttfk
r{|j||j|d||Yn?tk
r}z|j	|WYdd}~XnX|j
|dS)NT)rHr	cancelledrPrRrQrrrl
set_exception
set_result)r/r
registeredr"rrrNrirrrrqs
# z BaseSelectorEventLoop._sock_recvcCsc|jr'|jdkr'td|j}|rR|j|d||n
|jd|S)Nrzthe socket must be non-blockingF)rVrrrk
_sock_sendallr)r/r"rNrrrrsock_sendalls
z"BaseSelectorEventLoop.sock_sendallcCs|j}|r|j||jr/dSy|j|}WnSttfk
rbd}Yn6tk
r}z|j|dSWYdd}~XnX|t|kr|j	dn5|r||d}|j
||j|d||dS)NrT)rHrrrTrRrQrlrlenrrr)r/rrr"rNrrrirrrrs"


z#BaseSelectorEventLoop._sock_sendallccs|jr'|jdkr'tdttdsI|jtjkrtj|d|jd|j	d|}|j
s|EdH|jd\}}}}}|j}|j
||||EdHS)Nrzthe socket must be non-blockingAF_UNIXrrloop)rVrrhasattrrrrrZ_ensure_resolvedrdoneresultrk
_sock_connect)r/r"r>Zresolvedrfrrrrsock_connects"!	z"BaseSelectorEventLoop.sock_connectcCs|j}y|j|Wnttfk
ro|jtj|j||j||j	|||Yn?t
k
r}z|j|WYdd}~XnX|jddS)N)
rHconnectrRrQadd_done_callback	functoolspartial_sock_connect_doner_sock_connect_cbrlrr)r/rr"r>rrirrrrs  z#BaseSelectorEventLoop._sock_connectcCs|j|dS)N)r)r/rrrrrrsz(BaseSelectorEventLoop._sock_connect_donecCs|jrdSy>|jtjtj}|dkrMt|d|fWnIttfk
rhYn?tk
r}z|j	|WYdd}~XnX|j
ddS)NrzConnect call failed %s)r
getsockoptr
SOL_SOCKETSO_ERRORrUrRrQrlrr)r/rr"r>errrirrrrs z&BaseSelectorEventLoop._sock_connect_cbcCsJ|jr'|jdkr'td|j}|j|d||S)Nrzthe socket must be non-blockingF)rVrrrk_sock_accept)r/r"rrrrsock_accepts

z!BaseSelectorEventLoop.sock_acceptcCs|j}|r|j||jr/dSy#|j\}}|jdWnettfk
r|j||j|d|YnEt	k
r}z|j
|WYdd}~XnX|j||fdS)NFT)rHrrrarKrRrQrrrlrr)r/rrr"rrgr>rirrrrs
  z"BaseSelectorEventLoop._sock_acceptcCsx|D]\}}|j|j}\}}|tj@rk|dk	rk|jr^|j|n
|j||tj@r|dk	r|jr|j|q|j|qWdS)N)	fileobjrNr	rtZ
_cancelledrFZ
_add_callbackr~r)r/Z
event_listrrzrr{r|rrr_process_events
s	
	z%BaseSelectorEventLoop._process_eventscCs!|j|j|jdS)N)rFrHrC)r/r"rrr
_stop_servingsz#BaseSelectorEventLoop._stop_serving)(r)
__module____qualname__r%r5r;r8r?rCrErBr+rOrMrWr\rYrrerprLrFrrrrrrrrrrrrrrrrrrrr)r(rr6sT

(#cseZdZdZeZdZddfddZddZdd	Z	d
dZ
dd
ZddZddZ
ejrddZdddZddZddZddZS)_SelectorTransportiNcstj||||jd<|j|jd<d|jkr~y|j|jd<Wn"tjk
r}d|jd<YnX||_|j|_	||_
d|_||_|j
|_d|_d|_|jdk	r|jj||j|j	<dS)NrZsocknamer_TrF)r$r%_extragetsocknamegetpeernamererror_sockrH_sock_fd	_protocol_protocol_connected_server_buffer_factory_buffer
_conn_lost_closingZ_attachr.)r/rr"r3r0r1)r(rrr%)s&
						
z_SelectorTransport.__init__cCs|jjg}|jdkr.|jdn|jrD|jd|jd|j|jdk	r|jjrt|jj	|jt
j}|r|jdn
|jdt|jj	|jt
j}|rd}nd}|j
}|jd||fd	d
j|S)Nclosedclosingzfd=%szread=pollingz	read=idlepollingZidlezwrite=<%s, bufsize=%s>z<%s> )r(r)rappendrr_looprArr*r	rtr~get_write_buffer_sizejoin)r/inforstatebufsizerrr__repr__>s*	

	z_SelectorTransport.__repr__cCs|jddS)N)_force_close)r/rrrabortZsz_SelectorTransport.abortcCs
||_dS)N)r)r/r3rrrset_protocol]sz_SelectorTransport.set_protocolcCs|jS)N)r)r/rrrget_protocol`sz_SelectorTransport.get_protocolcCs|jS)N)r)r/rrrrncsz_SelectorTransport.is_closingcCsn|jr
dSd|_|jj|j|jsj|jd7_|jj|j|jj|jddS)NTr)	rrrFrrrr	call_soon_call_connection_lost)r/rrrrCfs			z_SelectorTransport.closecCs4|jdk	r0tjd|t|jjdS)Nzunclosed transport %r)rwarningswarnResourceWarningrC)r/rrr__del__tsz_SelectorTransport.__del__zFatal error on transportc	Csyt|tjr=|jjrhtjd||ddn+|jjd|d|d|d|ji|j	|dS)Nz%r: %srSTr]r^rjr3)

isinstancerZ_FATAL_ERROR_IGNOREr	get_debugr
r'rdrr)r/rir]rrr_fatal_errorys	z_SelectorTransport._fatal_errorcCs|jr
dS|jr6|jj|jj|j|js[d|_|jj|j|jd7_|jj|j	|dS)NTr)
rrclearrrrrrFrr)r/rirrrrs		
		z_SelectorTransport._force_closecCsuz|jr|jj|Wd|jjd|_d|_d|_|j}|dk	rp|jd|_XdS)N)rrZconnection_lostrrCrrZ_detach)r/rir1rrrrs	
				
z(_SelectorTransport._call_connection_lostcCs
t|jS)N)rr)r/rrrrsz(_SelectorTransport.get_write_buffer_sizei)r)rrmax_size	bytearrayrrr%rrrrrnrCrZPY34rrrrrrr)r(rrs 
	rcseZdZdddfddZddZddZdd	Zd
dZdd
ZddZ	ddZ
S)r2Ncstj|||||d|_d|_t|j|jj|jj	||jj|jj
|j|j|dk	r|jjt
j|ddS)NF)r$r%_eof_pausedr#rrrrconnection_maderLr_read_readyr_set_result_unless_cancelled)r/rr"r3r4r0r1)r(rrr%s		
z!_SelectorSocketTransport.__init__cCsi|jrtd|jr*tdd|_|jj|j|jjretjd|dS)Nz#Cannot pause_reading() when closingzAlready pausedTz%r pauses reading)	rr@rrrFrrr
r')r/rrr
pause_readings			z&_SelectorSocketTransport.pause_readingcCsg|jstdd|_|jr+dS|jj|j|j|jjrctj	d|dS)Nz
Not pausedFz%r resumes reading)
rr@rrrLrrrr
r')r/rrrresume_readings			z'_SelectorSocketTransport.resume_readingcCs|jr
dSy|jj|j}WnLttfk
r@Yntk
rt}z|j|dWYdd}~XnnX|r|jj	|nT|j
jrtj
d||jj}|r|j
j|jn
|jdS)Nz$Fatal read error on socket transportz%r received EOF)rrrPrrRrQrlrr
data_receivedrrr
r'eof_receivedrFrrC)r/rNri	keep_openrrrrs 	#z$_SelectorSocketTransport._read_readycCsNt|tttfs1tdt|j|jrFtd|sPdS|j	r|j	t
jkrxtj
d|j	d7_	dS|js0y|jj|}WnPttfk
rYnStk
r}z|j|ddSWYdd}~XnX||d}|sdS|jj|j|j|jj||jdS)Nz1data argument must be a bytes-like object, not %rz%Cannot call write() after write_eof()zsocket.send() raised exception.rz%Fatal write error on socket transport)rbytesr
memoryview	TypeErrorrr)rr@rr!LOG_THRESHOLD_FOR_CONNLOST_WRITESr
warningrrrTrRrQrlrrrr_write_readyextend_maybe_pause_protocol)r/rNrrirrrwrites4		
	z_SelectorSocketTransport.writecCs
|jr
dSy|jj|j}Wnlttfk
r@Yntk
r}z5|jj|j	|jj
|j|dWYdd}~XnrX|r|jd|=|j|js|jj|j	|j
r|jdn|jr|jjtjdS)Nz%Fatal write error on socket transport)rrrTrrRrQrlrrrrr_maybe_resume_protocolrrrshutdownrSHUT_WR)r/rrirrrr
s&	
#
			z%_SelectorSocketTransport._write_readycCs6|jr
dSd|_|js2|jjtjdS)NT)rrrrrr)r/rrr	write_eof"s
			z"_SelectorSocketTransport.write_eofcCsdS)NTr)r/rrr
can_write_eof)sz&_SelectorSocketTransport.can_write_eof)r)rrr%rrrrrrrrr)r(rr2s

#r2cseZdZeZdddddfddZdddZddZd	d
ZddZ	d
dZ
ddZddZddZ
S)r<NFc

stdkrtd|s0tj||}d|ddi}
|rY|rY||
d<|j||
}tj|||||	d|_||_||_	||_
d|_|jj
d||jjrtjd||jj}nd}|j|dS)Nzstdlib ssl module not availabler6Zdo_handshake_on_connectFr7r:z%r starts SSL handshake)sslr@rZ_create_transport_contextZwrap_socketr$r%r_server_hostname_waiter_sslcontextrrupdaterrr
r'time
_on_handshake)
r/rr9r3r:r4r6r7r0r1Zwrap_kwargsZsslsock
start_time)r(rrr%1s*

					z_SelectorSslTransport.__init__cCs^|jdkrdS|jjsQ|dk	rA|jj|n|jjdd|_dS)N)rrrr)r/rirrr_wakeup_waiterUsz$_SelectorSslTransport._wakeup_waiterc%Csy|jjWntjk
rH|jj|j|j|dSYntjk
r||jj	|j|j|dSYnt
k
r}z|jjrtj
d|dd|jj|j|jj|j|jj|j|t|trdSWYdd}~XnX|jj|j|jj|j|jj}t|jds|jr|jjtjkrytj||jWnhtk
r}zH|jjrtj
d|dd|jj|j|dSWYdd}~XnX|jjd|d|jjd|jjd	|jd
|_d
|_ |jj|j|j!d|_"|jj#|j$j%||jj#|j|jjr|jj&|}tj'd||ddS)
Nz%r: SSL handshake failedrSTZcheck_hostnamez1%r: SSL handshake failed on matching the hostnamepeercertciphercompressionZ
ssl_objectFz%r: SSL handshake took %.1f msg@@)(rZdo_handshakerSSLWantReadErrorrrLrrSSLWantWriteErrorr
BaseExceptionrr
rrFrrCrrrlZgetpeercertrrrZverify_modeZ	CERT_NONEZmatch_hostnamerrrr_read_wants_write_write_wants_readrrrrrrr')r/rrirZdtrrrr_sb

	


		



			z#_SelectorSslTransport._on_handshakecCsi|jrtd|jr*tdd|_|jj|j|jjretjd|dS)Nz#Cannot pause_reading() when closingzAlready pausedTz%r pauses reading)	rr@rrrFrrr
r')r/rrrrs			z#_SelectorSslTransport.pause_readingcCsg|jstdd|_|jr+dS|jj|j|j|jjrctj	d|dS)Nz
Not pausedFz%r resumes reading)
rr@rrrLrrrr
r')r/rrrrs			z$_SelectorSslTransport.resume_readingcCsr|jr
dS|jrKd|_|j|jrK|jj|j|jy|jj|j	}Wnt
ttj
fk
rYntjk
rd|_|jj|j|jj|j|jYntk
r}z|j|dWYdd}~XnmX|r|jj|nSzE|jjr=tjd||jj}|r_tjdWd|jXdS)NFTz!Fatal read error on SSL transportz%r received EOFz?returning true from eof_received() has no effect when using ssl)rrrrrrrrrPrrRrQrrrrrFrlrrrrr
r'rrrC)r/rNrirrrrrs4			
		#z!_SelectorSslTransport._read_readycCs|jr
dS|jrTd|_|j|jp8|jsT|jj|j|j|jrAy|j	j
|j}Wnttt
jfk
rd}Ynt
jk
rd}|jj|jd|_YnYtk
r*}z9|jj|j|jj|j|ddSWYdd}~XnX|rA|jd|=|j|js}|jj|j|jr}|jddS)NFrTz"Fatal write error on SSL transport)rrrrrrrLrrrrTrRrQrrrrrrlrrrr)r/rrirrrrs8			
	



		z"_SelectorSslTransport._write_readycCst|tttfs1tdt|j|s;dS|jrv|jtj	krct
jd|jd7_dS|js|j
j|j|j|jj||jdS)Nz1data argument must be a bytes-like object, not %rzsocket.send() raised exception.r)rrrrrrr)rrrr
rrrrrrrr)r/rNrrrrs	
	z_SelectorSslTransport.writecCsdS)NFr)r/rrrrsz#_SelectorSslTransport.can_write_eof)r)rrrrr%rrrrrrrrrr)r(rr<-s"
?
"#r<csgeZdZejZdddfddZddZddZddd	Z	d
dZ
S)r=Ncstj||||||_|jj|jj||jj|jj|j|j	|dk	r|jjt
j|ddS)N)r$r%_addressrrrrrLrrrr)r/rr"r3r>r4r0)r(rrr%s	z#_SelectorDatagramTransport.__init__cCstdd|jDS)Ncss!|]\}}t|VqdS)N)r).0rNrfrrr	<genexpr>'szC_SelectorDatagramTransport.get_write_buffer_size.<locals>.<genexpr>)sumr)r/rrrr&sz0_SelectorDatagramTransport.get_write_buffer_sizecCs|jr
dSy|jj|j\}}Wnttfk
rFYn|tk
rz}z|jj|WYdd}~XnHt	k
r}z|j
|dWYdd}~XnX|jj||dS)Nz&Fatal read error on datagram transport)rrrecvfromrrRrQrUrerror_receivedrlrZdatagram_received)r/rNrhrirrrr)s	"#z&_SelectorDatagramTransport._read_readycCst|tttfs1tdt|j|s;dS|jro|d|jfkrotd|jf|j	r|jr|j	t
jkrtj
d|j	d7_	dS|jsy7|jr|jj|n|jj||dSWnttfk
r&|jj|j|jYnqtk
r^}z|jj|dSWYdd}~Xn9tk
r}z|j|ddSWYdd}~XnX|jjt||f|jdS)Nz1data argument must be a bytes-like object, not %rz#Invalid address: must be None or %szsocket.send() raised exception.rz'Fatal write error on datagram transport)rrrrrrr)rrrrrr
rrrrTsendtorRrQrrr
_sendto_readyrUrrrlrrr)r/rNrhrirrrr7s<
			z!_SelectorDatagramTransport.sendtocCs:x|jr|jj\}}y3|jr@|jj|n|jj||Wqttfk
r|jj||fPYqt	k
r}z|j
j|dSWYdd}~Xqtk
r}z|j
|ddSWYdd}~XqXqW|j|js6|jj|j|jr6|jddS)Nz'Fatal write error on datagram transport)rpopleftrrrTrrRrQ
appendleftrUrrrlrrrrrrr)r/rNrhrirrrr^s*		
		z(_SelectorDatagramTransport._sendto_ready)r)rrcollectionsdequerr%rrrrrr)r(rr=s	'r=)!__all__rrcrrrr,rImportErrorrrrrrr	r
rZ
coroutinesrlogr
rrr#Z
BaseEventLooprZ_FlowControlMixinZ	Transportrr2r<r=rrrr<module>s>	

Back to Directory File Manager