HEX
Server: Apache
System: Linux scp1.abinfocom.com 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
User: confeduphaar (1010)
PHP: 8.1.33
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //lib/python3/dist-packages/twisted/internet/iocpreactor/__pycache__/reactor.cpython-38.pyc
U

��W[�#�@s@dZddlZddlZddlZddlmZddlmZmZm	Z	m
Z
ddlmZm
Z
ddlmZddlmZddlmZdd	lmZdd
lmZmZzddlmZWn&ek
r�dZdZe�d
�Yn
XejfZdZdZ e!d�\Z"Z#e
�$d�Z%e
�$d�Z&eej'ej(ej)ej*fe��Gdd�dej+ej,e��Z-dd�Z.ddgZ/dS)z'
Reactor that uses IO completion ports
�N)�implementer)�base�
interfaces�main�error)�log�failure)�Process)�_ThreadedWin32EventsMixin)�iocpsupport)�WAIT_TIMEOUT)�tcp�udp)�TLSMemoryBIOFactory�z|pyOpenSSL 0.10 or newer is required for SSL support in iocpreactor. It is missing, so the reactor will not support SSL APIs.i����z#Handler has no getFileHandle methodzFiledescriptor went awayc@s�eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Zd-dd�Z
d.dd�Zedk	r�d/dd�Zd0dd�Znd1dd�Zd2d d�Zd3d"d#�Zd4d%d&�Zd'idddd(dfd)d*�Zd+d,�ZdS)5�IOCPReactorNcCs"tj�|�t��|_t�|_dS�N)r�ReactorBase�__init__�_iocpZCompletionPort�port�set�handles��selfrr�F/usr/lib/python3/dist-packages/twisted/internet/iocpreactor/reactor.pyr9s
zIOCPReactor.__init__cCs|j�|�dSr)r�add�rZhandlerrr�addActiveHandle?szIOCPReactor.addActiveHandlecCs|j�|�dSr)r�discardrrrr�removeActiveHandleCszIOCPReactor.removeActiveHandlecCs�d}|dkrt}ntttd|��}|j�|�\}}}}|tkrBq�|tkrt|tksVt�t	�
|j|j|||�|d7}|t
kr~q�|j�d�\}}}}q8dS)z=
        Poll the IO completion port for new events.
        rNr�)�MAX_TIMEOUT�min�intrZgetEventr�
KEY_WAKEUP�
KEY_NORMAL�AssertionErrorrZcallWithLogger�owner�_callEventCallback�EVENTS_PER_LOOP)r�timeoutZprocessed_events�rc�numBytes�key�evtrrr�doIterationGs$�zIOCPReactor.doIterationcCs�|j}d}z@|�|||�t|dd�}|s0t}n|�dkr>t}|rHWdSWn t��d}t��YnX|r�|�	t
�|��dS)NZ
getFileHandle���r#)r*�callback�getattr�
_NO_GETHANDLE�_NO_FILEDESC�sys�exc_infor�errZloseConnectionrZFailure)rr.r/r1r*ZwhyZhandfnrrrr+ss 

zIOCPReactor._callEventCallbackcCsdSrrrrrr�installWaker�szIOCPReactor.installWakercCs|j�dtd�dS)Nr)rZ	postEventr'rrrr�wakeUp�szIOCPReactor.wakeUpcCs|j�|t�dSr)rZ	addHandler(rrrr�registerHandle�szIOCPReactor.registerHandlecCst�||�}|�|���|Sr)�socketr=�fileno)rZaf�stypeZsktrrr�createSocket�szIOCPReactor.createSocket�2�cCst�|||||�}|��|S)zI
        @see: twisted.internet.interfaces.IReactorTCP.listenTCP
        )r
�Port�startListening)rr�factory�backlog�	interface�prrr�	listenTCP�szIOCPReactor.listenTCP�cCs t�||||||�}|��|S)zJ
        @see: twisted.internet.interfaces.IReactorTCP.connectTCP
        )r
Z	ConnectorZconnect)r�hostrrFr-�bindAddress�crrr�
connectTCP�szIOCPReactor.connectTCPcCs"|�|t|d|�||�}d|_|S)zQ
            @see: twisted.internet.interfaces.IReactorSSL.listenSSL
            FZTLS)rJrZ_type�rrrF�contextFactoryrGrHrrr�	listenSSL�s
�zIOCPReactor.listenSSLcCs|�||t|d|�||�S)zR
            @see: twisted.internet.interfaces.IReactorSSL.connectSSL
            T)rOr�rrLrrFrQr-rMrrr�
connectSSL�s
�zIOCPReactor.connectSSLcCstd��dS)z�
            Non-implementation of L{IReactorSSL.listenSSL}.  Some dependency
            is not satisfied.  This implementation always raises
            L{NotImplementedError}.
            �|pyOpenSSL 0.10 or newer is required for SSL support in iocpreactor. It is missing, so the reactor does not support SSL APIs.N��NotImplementedErrorrPrrrrR�s�cCstd��dS)z�
            Non-implementation of L{IReactorSSL.connectSSL}.  Some dependency
            is not satisfied.  This implementation always raises
            L{NotImplementedError}.
            rUNrVrSrrrrT�s�� cCst�|||||�}|��|S)z�
        Connects a given L{DatagramProtocol} to the given numeric UDP port.

        @returns: object conforming to L{IListeningPort}.
        )rrDrE)rr�protocolrH�
maxPacketSizerIrrr�	listenUDP�szIOCPReactor.listenUDPFcCs t�||||||�}|��|S)z�
        Connects a given DatagramProtocol to the given numeric UDP port.

        EXPERIMENTAL.

        @returns: object conforming to IListeningPort.
        )rZ
MulticastPortrE)rrrYrHrZZlistenMultiplerIrrr�listenMulticast�s
	�zIOCPReactor.listenMulticastrrc

Cs^|dk	rtd��|dk	r td��|r,td��|	dk	r<td��|�||�\}}t||||||�S)z"
        Spawn a process.
        Nz,Setting UID is unsupported on this platform.z,Setting GID is unsupported on this platform.z&PTYs are unsupported on this platform.zGCustom child file descriptor mappings are unsupported on this platform.)�
ValueErrorZ_checkProcessArgsr	)
rZprocessProtocol�
executable�args�env�pathZuid�gidZusePTYZchildFDsrrr�spawnProcess�s�zIOCPReactor.spawnProcesscCst|j�}|j��|Sr)�listr�clear)r�resrrr�	removeAlls

zIOCPReactor.removeAll)rBrC)rKN)rBrC)rKN)rBrC)rKN)rCrX)rCrXF)�__name__�
__module__�__qualname__rrr r"r2r+r;r<r=rArJrOrrRrTr[r\rcrgrrrrr0s:,
	
	
	


�
�
rcCst�}t�|�dSr)rrZinstallReactor)�rrrr�installsrl)0�__doc__�warningsr>r8Zzope.interfacerZtwisted.internetrrrrZtwisted.pythonrrZtwisted.internet._dumbwin32procr	Z"twisted.internet.win32eventreactorr
Ztwisted.internet.iocpreactorrrZ"twisted.internet.iocpreactor.constrr
rZtwisted.protocols.tlsr�ImportErrorZ_extraInterfaces�warnZIReactorSSLr$r,�ranger(r'ZConnectionFdescWentAwayr6r7ZIReactorTCPZIReactorUDPZIReactorMulticastZIReactorProcessZ_SignalReactorMixinrrrl�__all__rrrr�<module>sJ�
�

���Z