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



].l@sddlZddlZddlZddlZddlZddlZddlmZddlmZddlm	Z	ddlm
Z
ddlmZddlmZdd	lm
Z
dd
lmZddlmZddlmZd
dddgZdZdZdZdZdZdZGddde	jZGddde	jZGdddeZGdddeZGdddeZ Gd d!d!ej!Z"Gd"dde
j#Z$Gd#ddZ%Gd$d%d%ej&Z'e"Z(Gd&d'd'ej)Z*e*Z+dS)(N)events)base_subprocess)futures)proactor_events)selector_events)tasks)
windows_utils)_overlapped)	coroutine)loggerSelectorEventLoopProactorEventLoopIocpProactorDefaultEventLoopPolicyliigMbP?g?cs|eZdZddfddZfddZddZfd	d
ZfddZfd
dZS)_OverlappedFutureloopNcs3tjd||jr&|jd=||_dS)Nrr)super__init___source_traceback_ov)selfovr)	__class__3/opt/alt/python35/lib64/python3.5/windows_events.pyr-s	
z_OverlappedFuture.__init__csZtj}|jdk	rV|jjr0dnd}|jdd||jjf|S)NpendingZ	completedrzoverlapped=<%s, %#x>)r
_repr_inforrinsertaddress)rinfostate)rrrr3s
 z_OverlappedFuture._repr_infocCs|jdkrdSy|jjWnctk
r}zCddd|d|i}|jrg|j|d<|jj|WYdd}~XnXd|_dS)Nmessagez&Cancelling an overlapped future failed	exceptionfuturesource_traceback)rcancelOSErrorr_loopcall_exception_handler)rexccontextrrr_cancel_overlapped:s	
#z$_OverlappedFuture._cancel_overlappedcs|jtjS)N)r-rr')r)rrrr'Js
z_OverlappedFuture.cancelcstj||jdS)N)r
set_exceptionr-)rr$)rrrr.Nsz_OverlappedFuture.set_exceptioncstj|d|_dS)N)r
set_resultr)rresult)rrrr/Rsz_OverlappedFuture.set_result)	__name__
__module____qualname__rrr-r'r.r/rr)rrr'srcseZdZddfddZddZfddZd	d
ZddZfd
dZfddZ	fddZ
S)_BaseWaitHandleFuturerNcsNtjd||jr&|jd=||_||_||_d|_dS)NrrTr)rrrr_handle_wait_handle_registered)rrhandlewait_handler)rrrrZs	
			z_BaseWaitHandleFuture.__init__cCstj|jdtjkS)Nr)_winapiZWaitForSingleObjectr5Z
WAIT_OBJECT_0)rrrr_pollhsz_BaseWaitHandleFuture._pollcs~tj}|jd|j|jdk	rW|jrDdnd}|j||jdk	rz|jd|j|S)Nz
handle=%#xsignaledZwaitingzwait_handle=%#x)rrappendr5r;r6)rr!r")rrrrms
z _BaseWaitHandleFuture._repr_infocCs
d|_dS)N)r)rfutrrr_unregister_wait_cbwsz)_BaseWaitHandleFuture._unregister_wait_cbcCs|js
dSd|_|j}d|_ytj|Wnytk
r}zY|jtjkrddd|d|i}|jr|j|d<|jj	|dSWYdd}~XnX|j
ddS)NFr#z$Failed to unregister the wait handler$r%r&)r7r6r
ZUnregisterWaitr(winerrorERROR_IO_PENDINGrr)r*r?)rr9r+r,rrr_unregister_wait|s"					
z&_BaseWaitHandleFuture._unregister_waitcs|jtjS)N)rBrr')r)rrrr's
z_BaseWaitHandleFuture.cancelcs|jtj|dS)N)rBrr.)rr$)rrrr.s
z#_BaseWaitHandleFuture.set_exceptioncs|jtj|dS)N)rBrr/)rr0)rrrr/s
z _BaseWaitHandleFuture.set_result)r1r2r3rr;rr?rBr'r.r/rr)rrr4Ws
r4csFeZdZddfddZddZfddZS)	_WaitCancelFuturerNcs)tj|||d|d|_dS)Nr)rr_done_callback)rreventr9r)rrrrsz_WaitCancelFuture.__init__cCstddS)Nz'_WaitCancelFuture must not be cancelled)RuntimeError)rrrrr'sz_WaitCancelFuture.cancelcs3tt|j|jdk	r/|j|dS)N)rrC_schedule_callbacksrD)r)rrrrGsz%_WaitCancelFuture._schedule_callbacks)r1r2r3rr'rGrr)rrrCsrCcsFeZdZddfddZfddZddZS)	_WaitHandleFuturerNcsVtj|||d|||_d|_tjdddd|_d|_dS)NrTF)rr	_proactorZ_unregister_proactorr
ZCreateEvent_event
_event_fut)rrr8r9proactorr)rrrrs
		z_WaitHandleFuture.__init__csa|jdk	r1tj|jd|_d|_|jj|jd|_tj|dS)N)	rJr:CloseHandlerKrI_unregisterrrr?)rr>)rrrr?s				z%_WaitHandleFuture._unregister_wait_cbcCs|js
dSd|_|j}d|_ytj||jWnytk
r}zY|jtjkrddd|d|i}|jr|j|d<|j	j
|dSWYdd}~XnX|jj|j|j
|_dS)NFr#z$Failed to unregister the wait handler$r%r&)r7r6r
ZUnregisterWaitExrJr(r@rArr)r*rI_wait_cancelr?rK)rr9r+r,rrrrBs$					
z"_WaitHandleFuture._unregister_wait)r1r2r3rr?rBrr)rrrHsrHc@sReZdZddZddZddZddZd	d
ZeZdS)
PipeServercCs@||_tj|_d|_d|_|jd|_dS)NT)_addressweakrefWeakSet_free_instances_pipe_accept_pipe_future_server_pipe_handle)rr rrrrs
			zPipeServer.__init__cCs |j|jd}|_|S)NF)rUrW)rtmprrr_get_unconnected_pipesz PipeServer._get_unconnected_pipec	Cs|jrdStjtjB}|r3|tjO}tj|j|tjtjBtj	Btj
tjtjtj
tj}tj|}|jj||S)N)closedr:ZPIPE_ACCESS_DUPLEXZFILE_FLAG_OVERLAPPEDZFILE_FLAG_FIRST_PIPE_INSTANCEZCreateNamedPiperQZPIPE_TYPE_MESSAGEZPIPE_READMODE_MESSAGEZ	PIPE_WAITZPIPE_UNLIMITED_INSTANCESr	BUFSIZEZNMPWAIT_WAIT_FOREVERNULL
PipeHandlerTadd)rfirstflagshpiperrrrWs
	
zPipeServer._server_pipe_handlecCs
|jdkS)N)rQ)rrrrrZszPipeServer.closedcCsu|jdk	r%|jjd|_|jdk	rqx|jD]}|jq>Wd|_d|_|jjdS)N)rVr'rQrTcloserUclear)rrbrrrrcs
			zPipeServer.closeN)	r1r2r3rrYrWrZrc__del__rrrrrPs
rPc@seZdZddZdS)_WindowsSelectorEventLoopcCs
tjS)N)r	
socketpair)rrrr_socketpair&sz%_WindowsSelectorEventLoop._socketpairN)r1r2r3rhrrrrrf#srfcsjeZdZdfddZddZeddZedd	Zedd
dZS)rNcs)|dkrt}tj|dS)N)rrr)rrL)rrrr-s	zProactorEventLoop.__init__cCs
tjS)N)r	rg)rrrrrh2szProactorEventLoop._socketpairccsN|jj|}|EdH}|}|j||dd|i}||fS)Nextraaddr)rIconnect_pipe_make_duplex_pipe_transport)rprotocol_factoryr frbprotocoltransrrrcreate_pipe_connection5s	z(ProactorEventLoop.create_pipe_connectioncsAtdfddjgS)Ncsbd}y|rj|j}jj|jrE|jdS}j||ddij}|dkrdSjj|}Wnt	k
r#}zh|r|j
dkrjddd|d|i|jnjrt
jd|d	d
WYdd}~Xn;tjk
rG|rC|jYnX|_|jdS)Nrirjrr#zPipe accept failedr$rbzAccept pipe failed on pipe %rexc_infoTr)r0rTdiscardrZrcrlrYrIaccept_piper(filenor*Z_debugrwarningrCancelledErrorrVadd_done_callback)rnrbror+)r loop_accept_pipermrserverrrryBs<
	

			z>ProactorEventLoop.start_serving_pipe.<locals>.loop_accept_pipe)rPZ	call_soon)rrmr r)r ryrmrrzrstart_serving_pipe>s!(
z$ProactorEventLoop.start_serving_pipec	ks|j}
t||||||||d|
d||	}y
|
EdHWn+tk
rv}z|}
WYdd}~XnXd}
|
dk	r|j|jEdH|
|S)Nwaiterri)
create_future_WindowsSubprocessTransport	Exceptionrc_wait)rroargsshellstdinstdoutstderrbufsizerikwargsr|Ztranspr+errrrr_make_subprocess_transportms		

z,ProactorEventLoop._make_subprocess_transport)	r1r2r3rrhrrqr{rrr)rrr*s	/c@s0eZdZdddZddZddZdd	d
ZddZd
ddZd
ddZ	ddZ
ddZddZe
ddZdddZddZddZd d!Zd"d#Zd$d%Zd&d'Zdd(d)Zd*d+Zd,d-Zd.d/ZdS)0rlcCsdd|_g|_tjtjtd||_i|_tj	|_
g|_tj	|_dS)Nr)
r)_resultsr
CreateIoCompletionPortINVALID_HANDLE_VALUEr\_iocp_cacherRrSr7
_unregistered_stopped_serving)rZconcurrencyrrrrs				zIocpProactor.__init__cCs)d|jjt|jt|jfS)Nz<%s overlapped#=%s result#=%s>)rr1lenrr)rrrr__repr__szIocpProactor.__repr__cCs
||_dS)N)r))rrrrrset_loopszIocpProactor.set_loopNcCs,|js|j||j}g|_|S)N)rr;)rtimeoutrXrrrselects
	
		zIocpProactor.selectcCs |jj}|j||S)N)r)r}r/)rvaluer>rrr_results
zIocpProactor._resultrcCs|j|tjt}yHt|tjrM|j|j||n|j|j|Wnt	k
r|j
dSYnXdd}|j|||S)NcSsay|jSWnLtk
r\}z,|jtjkrGt|jnWYdd}~XnXdS)N)	getresultr(r@r
ERROR_NETNAME_DELETEDConnectionResetErrorr)rpkeyrr+rrrfinish_recvsz&IocpProactor.recv.<locals>.finish_recv)_register_with_iocpr

Overlappedr\
isinstancesocketZWSARecvruZReadFileBrokenPipeErrorr	_register)rconnnbytesr`rrrrrrecvs

	zIocpProactor.recvcCs|j|tjt}t|tjrJ|j|j||n|j|j|dd}|j	|||S)NcSsay|jSWnLtk
r\}z,|jtjkrGt|jnWYdd}~XnXdS)N)rr(r@r
rrr)rprrr+rrrfinish_sendsz&IocpProactor.send.<locals>.finish_send)
rr
rr\rrZWSASendruZ	WriteFiler)rrbufr`rrrrrsends
	zIocpProactor.sendcs|j|jjtjt}|jjjfdd}tdd}|j	||}||}t
j|d|j|S)Ncs^|jtjdj}jtjtj|j	j
jfS)Nz@P)rstructpackru
setsockoptr
SOL_SOCKETr
ZSO_UPDATE_ACCEPT_CONTEXT
settimeout
gettimeoutgetpeername)rprrr)rlistenerrr
finish_accepts

z*IocpProactor.accept.<locals>.finish_acceptcss6y
|EdHWn"tjk
r1|jYnXdS)N)rrwrc)r%rrrraccept_coros


z(IocpProactor.accept.<locals>.accept_coror)
r_get_accept_socketfamilyr
rr\ZAcceptExrurrrZ
ensure_futurer))rrrrrr%coror)rrraccepts
		zIocpProactor.acceptcs|jytjjjWnStk
r}z3|jtjkrTj	ddkrmWYdd}~XnXtj
t}|jj|fdd}|j
||S)Nrrcs'|jjtjtjdS)Nr)rrrrr
ZSO_UPDATE_CONNECT_CONTEXT)rprr)rrrfinish_connects

z,IocpProactor.connect.<locals>.finish_connect)rr
Z	BindLocalrurr(r@errnoZ	WSAEINVALgetsocknamerr\Z	ConnectExr)rrr errr)rrconnects
zIocpProactor.connectcsi|jtjt}|jj}|rD|jSfdd}|j||S)Ncs|jS)N)r)rprr)rbrrfinish_accept_pipes
z4IocpProactor.accept_pipe.<locals>.finish_accept_pipe)rr
rr\ZConnectNamedPiperurr)rrbrZ	connectedrr)rbrrts

zIocpProactor.accept_pipeccst}xytj|}PWn:tk
rY}z|jtjkrGWYdd}~XnXt|dt}tj	|d|j
EdHq	Wtj|S)Nr)
CONNECT_PIPE_INIT_DELAYr
ZConnectPiper(r@ZERROR_PIPE_BUSYminCONNECT_PIPE_MAX_DELAYrsleepr)r	r])rr delayr8r+rrrrkszIocpProactor.connect_pipecCs|j||dS)NF)_wait_for_handle)rr8rrrrwait_for_handle*szIocpProactor.wait_for_handlecCs"|j|dd}||_|S)NT)rrD)rrEZ
done_callbackr>rrrrO2s	zIocpProactor._wait_cancelcs|dkrtj}ntj|d}tjt}tj||j|j	|}|r|t
|||d|jnt||||d|jj
rj
d=fdd}|d|f|j|j	<S)Ng@@rrcs
jS)N)r;)rprr)rnrrfinish_wait_for_handleMsz=IocpProactor._wait_for_handle.<locals>.finish_wait_for_handlerr)r:INFINITEmathceilr
rr\ZRegisterWaitWithQueuerr rCr)rHrr)rr8rZ
_is_cancelmsrr9rr)rnrr9s	
	zIocpProactor._wait_for_handlecCsB||jkr>|jj|tj|j|jdddS)Nr)r7r^r
rrur)robjrrrrYsz IocpProactor._register_with_iocpcCst|d|j}|jr(|jd=|jsy|dd|}Wn2tk
r{}z|j|WYdd}~XnX|j|||||f|j|j<|S)Nrrr)	rr)rrr(r.r/rr )rrrcallbackrnrrrrrrcs	
	 
zIocpProactor._registercCs|jj|dS)N)rr=)rrrrrrNszIocpProactor._unregistercCs tj|}|jd|S)Nr)rr)rrsrrrrs
zIocpProactor._get_accept_socketcCs|dkrt}nF|dkr0tdn+tj|d}|tkr[tdxutj|j|}|dkrPd}|\}}}}y"|jj|\}}	}
}Wnrt	k
r.|j
jr|j
jdddd||||fi|dtj
fkr'tj|w^YnX|
|jkrK|jq^|js^y||||	}WnBtk
r}
z"|j|
|jj|WYdd}
~
Xq^X|j||jj|q^Wx'|jD]}	|jj|	jdqW|jjdS)	Nrznegative timeoutg@@ztimeout too bigr#z8GetQueuedCompletionStatus() returned an unexpected eventstatusz)err=%s transferred=%s key=%#x address=%#x)r
ValueErrorrrr
ZGetQueuedCompletionStatusrrpopKeyErrorr)Z	get_debugr*rr:rMrr'doner(r.rr=r/rr rd)rrrrrZtransferredrr rnrrrrrrrrr;sJ	"
	


#
zIocpProactor._pollcCs|jj|dS)N)rr^)rrrrr
_stop_servingszIocpProactor._stop_servingcCs7xt|jjD]\}\}}}}|jr=qt|trOqy|jWqtk
r}zR|jdk	rddd|d|i}|j	r|j	|d<|jj
|WYdd}~XqXqWx)|jr|jdstj
dqWg|_|jdk	r3tj|jd|_dS)Nr#zCancelling a future failedr$r%r&rz"taking long time to close proactor)listritems	cancelledrrCr'r(r)rr*r;rdebugrrr:rM)rr r>rrrr+r,rrrrcs,.	
'	zIocpProactor.closecCs|jdS)N)rc)rrrrreszIocpProactor.__del__)r1r2r3rrrrrrrrrrtrrkrrOrrrrNrr;rrcrerrrrrs,
 
	7 c@seZdZddZdS)r~c

swtj|d|d|d|d|d||_fdd}jjjtjj}	|	j|dS)Nrrrrrcs jj}j|dS)N)_procpollZ_process_exited)rn
returncode)rrrrsz4_WindowsSubprocessTransport._start.<locals>.callback)	r	Popenrr)rIrintr5rx)
rrrrrrrrrrnr)rr_starts!z"_WindowsSubprocessTransport._startN)r1r2r3rrrrrr~sr~c@seZdZeZdS)_WindowsDefaultEventLoopPolicyN)r1r2r3r
Z
_loop_factoryrrrrrsr),r:rrrrrRrrrrrrr	r
Z
coroutinesrlogr__all__r\rZERROR_CONNECTION_REFUSEDZERROR_CONNECTION_ABORTEDrrFuturerr4rCrHobjectrPZBaseSelectorEventLooprfZBaseProactorEventLooprrZBaseSubprocessTransportr~r
ZBaseDefaultEventLoopPolicyrrrrrr<module>sH		0J4;]j
Back to Directory File Manager