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: //usr/lib/python3/dist-packages/twisted/internet/__pycache__/selectreactor.cpython-38.pyc
U

��W[G�@s�dZddlmZmZddlmZddlZddlZddlZddl	m
Z
mZddlm
Z
ddlmZddlmZdd	lmZdd
lmZddd�Zed
kr�eZnejZzddlmZWnek
r�eZYnXeZe
e�Gdd�deje��Zdd�ZdgZ dS)z
Select reactor
�)�division�absolute_import)�sleepN)�EINTR�EBADF)�implementer)�
IReactorFDSet)�	posixbase)�log)�platformTypecCsj|s2|s2|dkrd}n
t|d�}t|�gggfS|dksB|dkrFd}t�||||�\}}}|||gfS)zWin32 select wrapper.Ng{�G�z�?g����MbP?g�?)�minr�select)�r�w�e�timeout�r�@/usr/lib/python3/dist-packages/twisted/internet/selectreactor.py�win32selects

rZwin32)�_ThreadedWin32EventsMixinc@sleZdZdZdd�Zdd�Zdd�ZeZdd	�Zd
d�Z	dd
�Z
dd�Zdd�Zdd�Z
dd�Zdd�ZdS)�
SelectReactora-
    A select() based reactor - runs on all POSIX platforms and on Win32.

    @ivar _reads: A set containing L{FileDescriptor} instances which will be
        checked for read events.

    @ivar _writes: A set containing L{FileDescriptor} instances which will be
        checked for writability.
    cCs t�|_t�|_tj�|�dS)zV
        Initialize file descriptor tracking dictionaries and the base class.
        N)�set�_reads�_writesr	�PosixReactorBase�__init__��selfrrrrBszSelectReactor.__init__cCs�t�d�t|j�}t|j�}|j��|j��|j|f|j|ffD]v\}}|D]h}zt�|g|g|gd�Wn>tk
r�}z t�d|�|�||d�W5d}~XYqRX|�	|�qRqFdS)Nz1Malformed file descriptor found.  Preening lists.rzbad descriptor %sF)
r
�msg�listrr�clearr
�	Exception�_disconnectSelectable�add)rZreadersZwritersZselSetZselList�
selectablerrrr�_preenDescriptorsKs




� zSelectReactor._preenDescriptorsc
CsJzt|j|jg|�\}}}Wn�tk
r:|��YdStk
r^t��|��YdStj	t
j	tfk
r�}zf|jddkr�|js�|js�WY�FdS�n:|jdt
kr�WY�*dS|jdtkr�|��WY�
dS�W5d}~XYnX|j}tj}|d|jf|d|jffD]4\}}	}
|D]"}||
k�r0�q|||||	��q�qdS)z�
        Run one iteration of the I/O monitor loop.

        This will run all selectables who had input or output readiness
        waiting for them.
        Nr)r��doReadZdoWrite)�_selectrr�
ValueErrorr%�	TypeErrorr
�errr
�error�socket�IOError�argsrr�_doReadOrWriteZcallWithLogger)rrrrZignoredZseZ_drdwZ_logrunZselectables�methodZfdsetr$rrr�doSelect]sB�




�
zSelectReactor.doSelectcCsLzt||��}Wn t��d}t��YnX|rH|�|||dk�dS)N�r')�getattr�sys�exc_infor
r+r")rr$r1Zwhyrrrr0�szSelectReactor._doReadOrWritecCs|j�|�dS)zR
        Add a FileDescriptor for notification of data available to read.
        N)rr#�r�readerrrr�	addReader�szSelectReactor.addReadercCs|j�|�dS)zS
        Add a FileDescriptor for notification of data available to write.
        N)rr#�r�writerrrr�	addWriter�szSelectReactor.addWritercCs|j�|�dS)zQ
        Remove a Selectable for notification of data available to read.
        N)r�discardr7rrr�removeReader�szSelectReactor.removeReadercCs|j�|�dS)zR
        Remove a Selectable for notification of data available to write.
        N)rr=r:rrr�removeWriter�szSelectReactor.removeWritercCs|�|j|j�S�N)Z
_removeAllrrrrrr�	removeAll�szSelectReactor.removeAllcCs
t|j�Sr@)rrrrrr�
getReaders�szSelectReactor.getReaderscCs
t|j�Sr@)rrrrrr�
getWriters�szSelectReactor.getWritersN)�__name__�
__module__�__qualname__�__doc__rr%r2ZdoIterationr0r9r<r>r?rArBrCrrrrr6s
	4	rcCst�}ddlm}||�dS)zIConfigure the twisted mainloop to be run using the select() reactor.
    r)�installReactorN)rZtwisted.internet.mainrH)ZreactorrHrrr�install�srI)N)!rGZ
__future__rr�timerr5r
r-�errnorrZzope.interfacerZtwisted.internet.interfacesrZtwisted.internetr	Ztwisted.pythonr
Ztwisted.python.runtimerrr(Z"twisted.internet.win32eventreactorr�ImportError�objectZ
_extraBaserrrI�__all__rrrr�<module>s.