§
    Ètºf¸$  ã                   ó  — U d Z ddlZddlZddlZddlmZmZ ddlmZ ddl	m
Z
mZmZmZ ddlmZ ddlmZmZmZ ddlmZ dd	lmZ dd
lmZmZ 	 ddlmZ eZej        fZ n7# e!$ r/ dZdZ eeej                 df         e"d<    ej#        d¦  «         Y nw xY wdZ$dZ% e&d¦  «        \  Z'Z( ej)        d¦  «        Z* ej)        d¦  «        Z+ eej,        ej-        ej.        ej/        ge ¢R Ž  G d„ de
j0        e¦  «        ¦   «         Z1d„ Z2ddgZ3dS )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 methodzFiledescriptor went awayc                   ó°   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zdd„Zdd„Ze�
dd„Z	 dd„Zn	dd„Z	 dd„Zdd„Z	 dd„Zdi dddddfd„Zd„ ZdS ) ÚIOCPReactorNc                 óš   — t           j                             | ¦  «         t          j        ¦   «         | _        t          ¦   «         | _        d S ©N)r   ÚReactorBaseÚ__init__Ú_iocpÚCompletionPortÚportÚsetÚhandles©Úselfs    úc/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/twisted/internet/iocpreactor/reactor.pyr   zIOCPReactor.__init__<   s8   € ÝÔ×!Ò! $Ñ'Ô'Ð'ÝÔ(Ñ*Ô*ˆŒ	Ý‘u”uˆŒˆˆó    c                 ó:   — | j                              |¦  «         d S r   )r!   Úadd©r#   Úhandles     r$   ÚaddActiveHandlezIOCPReactor.addActiveHandleA   s   € ØŒ×Ò˜Ñ Ô Ð Ð Ð r%   c                 ó:   — | j                              |¦  «         d S r   )r!   Údiscardr(   s     r$   ÚremoveActiveHandlezIOCPReactor.removeActiveHandleD   s   € ØŒ×Ò˜VÑ$Ô$Ð$Ð$Ð$r%   c                 ó–  — d}|€t           }n%t          t           t          d|z  ¦  «        ¦  «        }| j                             |¦  «        \  }}}}	 |t
          k    rdS |t          k    r4|t          k    sJ ‚t          j	        |j
        | j        |||¦  «         |dz  }|t          k    rdS | j                             d¦  «        \  }}}}Œy)z=
        Poll the IO completion port for new events.
        r   Nr   é   )ÚMAX_TIMEOUTÚminÚintr   ÚgetEventr   Ú
KEY_WAKEUPÚ
KEY_NORMALr   ÚcallWithLoggerÚownerÚ_callEventCallbackÚEVENTS_PER_LOOP)r#   ÚtimeoutÚprocessed_eventsÚrcÚnumBytesÚkeyÚevts          r$   ÚdoIterationzIOCPReactor.doIterationG   så   € ð2 ÐØˆ?Ý!ˆGˆGå�+¥s¨4°'©>Ñ':Ô':Ñ;Ô;ˆGØ!%¤×!3Ò!3°GÑ!<Ô!<ÑˆˆH�c˜3ð	;Ø•\Ò!Ð!Ø�Ø•jÒ Ð Ø�jÒ(Ð(Ð(Ð(ÝÔ"Ø”I˜tÔ6¸¸HÀcñô ð ð ! AÑ%Ð Ø¥?Ò2Ð2Ø�Ø%)¤Y×%7Ò%7¸Ñ%:Ô%:Ñ"ˆB�˜#˜sð	;r%   c                 ó€  — |j         }d }	 |                     |||¦  «         t          |dd ¦  «        }|st          }n |¦   «         dk    rt          }|rd S n<# t
          $ r/ t          j        ¦   «         d         }t          j	        ¦   «          Y nw xY w|r)| 
                    t          j        |¦  «        ¦  «         d S d S )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$   r8   zIOCPReactor._callEventCallbacks   sá   € Ø”	ˆØˆð	Ø�LŠL˜˜X sÑ+Ô+Ð+Ý˜U O°TÑ:Ô:ˆFØð #Ý#��Ø�‘”˜R’�Ý"�Øð Ø�ðøåð 	ð 	ð 	Ý”,‘.”. Ô#ˆCÝŒG‰IŒIˆIˆIˆIð	øøøð ð 	7Ø× Ò ¥¤°Ñ!5Ô!5Ñ6Ô6Ð6Ð6Ð6ð	7ð 	7s   ‹A	A Á6BÂBc                 ó   — d S r   r   r"   s    r$   ÚinstallWakerzIOCPReactor.installWaker…   s   € Øˆr%   c                 óH   — | j                              dt          d ¦  «         d S )Nr   )r   Ú	postEventr4   r"   s    r$   ÚwakeUpzIOCPReactor.wakeUpˆ   s"   € ØŒ	×Ò˜A�z¨4Ñ0Ô0Ð0Ð0Ð0r%   c                 óF   — | j                              |t          ¦  «         d S r   )r   Ú	addHandler5   r(   s     r$   ÚregisterHandlezIOCPReactor.registerHandle‹   s    € ØŒ	×Ò˜F¥JÑ/Ô/Ð/Ð/Ð/r%   c                 ó~   — t          j         ||¦  «        }|                      |                     ¦   «         ¦  «         |S r   )ÚsocketrW   Úfileno)r#   ÚafÚstypeÚskts       r$   ÚcreateSocketzIOCPReactor.createSocketŽ   s4   € ÝŒm˜B Ñ&Ô&ˆØ×Ò˜CŸJšJ™LœLÑ)Ô)Ð)Øˆ
r%   é2   Ú c                 ó^   — t          j        ||||| ¦  «        }|                     ¦   «          |S )zI
        @see: twisted.internet.interfaces.IReactorTCP.listenTCP
        )r   ÚPortÚstartListening)r#   r   ÚfactoryÚbacklogÚ	interfaceÚps         r$   Ú	listenTCPzIOCPReactor.listenTCP“   s2   € õ ŒH�T˜7 G¨Y¸Ñ=Ô=ˆØ	×ÒÑÔÐØˆr%   é   c                 ó`   — t          j        |||||| ¦  «        }|                     ¦   «          |S )zJ
        @see: twisted.internet.interfaces.IReactorTCP.connectTCP
        )r   Ú	ConnectorÚconnect)r#   Úhostr   rd   r:   ÚbindAddressÚcs          r$   Ú
connectTCPzIOCPReactor.connectTCP›   s/   € õ ŒM˜$  g¨w¸ÀTÑJÔJˆØ	�	Š	‰ŒˆØˆr%   c                 ób   — |                       |t          |d|¦  «        ||¦  «        }d|_        |S )zQ
            @see: twisted.internet.interfaces.IReactorSSL.listenSSL
            FÚTLS)rh   r   Ú_type©r#   r   rd   ÚcontextFactoryre   rf   s         r$   Ú	listenSSLzIOCPReactor.listenSSL¥   s=   € ð —>’>ØÝ# N°E¸7ÑCÔCØØñ	ô ˆDð ˆDŒJØˆKr%   c           	      óR   — |                       ||t          |d|¦  «        ||¦  «        S )zR
            @see: twisted.internet.interfaces.IReactorSSL.connectSSL
            T)rp   r   ©r#   rm   r   rd   ru   r:   rn   s          r$   Ú
connectSSLzIOCPReactor.connectSSL²   s5   € ð —?’?ØØÝ# N°D¸'ÑBÔBØØñô ð r%   c                 ó    — t          d¦  «        ‚)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.©ÚNotImplementedErrorrt   s         r$   rv   zIOCPReactor.listenSSLÂ   s   € õ &ðñô ð r%   c                 ó    — t          d¦  «        ‚)zÀ
            Non-implementation of L{IReactorSSL.connectSSL}.  Some dependency
            is not satisfied.  This implementation always raises
            L{NotImplementedError}.
            r{   r|   rx   s          r$   ry   zIOCPReactor.connectSSLÎ   s   € õ &ðñô ð r%   é    c                 ó^   — t          j        ||||| ¦  «        }|                     ¦   «          |S )z�
        Connects a given L{DatagramProtocol} to the given numeric UDP port.

        @returns: object conforming to L{IListeningPort}.
        )r   rb   rc   )r#   r   Úprotocolrf   ÚmaxPacketSizerg   s         r$   Ú	listenUDPzIOCPReactor.listenUDPÜ   s2   € õ ŒH�T˜8 Y°¸tÑDÔDˆØ	×ÒÑÔÐØˆr%   Fc                 ó`   — t          j        ||||| |¦  «        }|                     ¦   «          |S )z¡
        Connects a given DatagramProtocol to the given numeric UDP port.

        EXPERIMENTAL.

        @returns: object conforming to IListeningPort.
        )r   ÚMulticastPortrc   )r#   r   r�   rf   r‚   ÚlistenMultiplerg   s          r$   ÚlistenMulticastzIOCPReactor.listenMulticastæ   s<   € õ ÔØ�(˜I }°d¸Nñ
ô 
ˆð 	
×ÒÑÔÐØˆr%   r   r   c
                 ó²   — |�t          d¦  «        ‚|�t          d¦  «        ‚|rt          d¦  «        ‚|	�t          d¦  «        ‚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.)Ú
ValueErrorr
   )
r#   ÚprocessProtocolÚ
executableÚargsÚenvÚpathÚuidÚgidÚusePTYÚchildFDss
             r$   ÚspawnProcesszIOCPReactor.spawnProcessö   s{   € ð ˆ?ÝÐKÑLÔLÐLØˆ?ÝÐKÑLÔLÐLØð 	GÝÐEÑFÔFÐFØÐÝð!ñô ð õ �t˜_¨j¸$ÀÀTÑJÔJÐJr%   c                 ó`   — t          | j        ¦  «        }| j                             ¦   «          |S r   )Úlistr!   Úclear)r#   Úress     r$   Ú	removeAllzIOCPReactor.removeAll  s*   € Ý�4”<Ñ Ô ˆØŒ×ÒÑÔÐØˆ
r%   )r_   r`   )ri   N)r`   r   )r`   r   F)Ú__name__Ú
__module__Ú__qualname__r   r   r*   r-   r@   r8   rQ   rT   rW   r^   rh   rp   r   rv   ry   rƒ   r‡   r“   r˜   r   r%   r$   r   r   2   s£  € € € € € ð €Dðð ð ð
!ð !ð !ð%ð %ð %ð*;ð *;ð *;ðX7ð 7ð 7ð$ð ð ð1ð 1ð 1ð0ð 0ð 0ðð ð ð
ð ð ð ðð ð ð ð Ð&ð	ð 	ð 	ð 	ð PTð	ð 	ð 	ð 	ð 	ð 
	ð 
	ð 
	ð 
	ð PTð	ð 	ð 	ð 	ðð ð ð ð PUðð ð ð ð( ØØØØØØðKð Kð Kð Kð8ð ð ð ð r%   r   c                  óJ   — t          ¦   «         } t          j        | ¦  «         d S r   )r   r	   ÚinstallReactor)Úrs    r$   ÚinstallrŸ     s"   € Ý‰Œ€AÝÔ˜ÑÔÐÐÐr%   rŸ   )4Ú__doc__rY   rI   ÚwarningsÚtypingr   r   Úzope.interfacer   Útwisted.internetr   r   r   r	   Útwisted.internet._dumbwin32procr
   Útwisted.internet.iocpreactorr   r   r   r   Ú"twisted.internet.iocpreactor.constr   Ú"twisted.internet.win32eventreactorr   Útwisted.pythonr   r   Útwisted.protocols.tlsr   Ú_TLSMemoryBIOFactoryÚIReactorSSLr   ÚImportErrorÚ__annotations__Úwarnr0   r9   Úranger5   r4   ÚConnectionFdescWentAwayrF   rG   ÚIReactorTCPÚIReactorUDPÚIReactorMulticastÚIReactorProcessr   r   rŸ   Ú__all__r   r%   r$   ú<module>r·      si  ðð
ð ð ð
 €€€Ø 
€
€
€
Ø €€€Ø Ð Ð Ð Ð Ð Ð Ð à &Ð &Ð &Ð &Ð &Ð &à :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GÐ GØ ;Ð ;Ð ;Ð ;Ð ;Ð ;Ø HÐ HÐ HÐ HÐ HÐ HØ 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'ð1ØQÐQÐQÐQÐQÐQð /ÐØ"Ô.Ð0ÐÐøð ð ð ð ØÐð BDÐ�e˜D Ô!7Ô8¸#Ð=Ô>ÐCÐCÑCØ€H„Mð	Cñô ð ð ð ðøøøð €à€ð ˜˜q™œÑ €
ˆJà-�Ô-Ð.SÑTÔT€Ø,ˆuÔ,Ð-GÑHÔH€ð €ØÔØÔØÔ ØÔð	ð
 ðð ð ð\ð \ð \ð \ð \�$Ô"Ð$=ñ \ô \ñô ð\ð~ð ð ð
 ˜)Ð
$€€€s   ÁA  Á 1BÂB