+
    üÐj %  ã                   ó4  a € R t40 t R t^ RIt^ RIt^ RIt^ RIHtHt ^ RIH	t	 ^ RI
HtHtHtHt ^ RIHt ^ RIHtHtHt ^ RIHt ^ RIHt ^ R	IHtHt  ^ R
IHt ]t]P@                  3t!Rt$Rt%]&! ^4      w  t't(]PR                  ! R4      t*]PR                  ! R4      t+]	! ]PX                  ]PZ                  ]P\                  ]P^                  .]!O5!   ! R R]P`                  ]4      4       t1R t2RR.t3R#   ]" d    RtRt!] ^ k ]PF                  ! R4        L­i ; i)z'
Reactor that uses IO completion ports
N)ÚTupleÚType)Úimplementer)ÚbaseÚerrorÚ
interfacesÚmain)ÚProcess)ÚiocpsupportÚtcpÚudp)ÚWAIT_TIMEOUT)Ú_ThreadedWin32EventsMixin)ÚfailureÚlog)ÚTLSMemoryBIOFactoryz|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                   óÞ   a € ] tR t^2t o RtR tR tR tR tR t	R t
R tR	 tV 3R
 lR ltRR ltRR lt]e   RR ltRR ltM
RR ltRR ltRR ltRR ltR/ RRR^ R3R ltR tRtV tR# )ÚIOCPReactorNc                ó–   € \         P                  P                  V 4       \        P                  ! 4       V n        \        4       V n        R # ©N)r   ÚReactorBaseÚ__init__Ú_iocpÚCompletionPortÚportÚsetÚhandles©Úselfs   &ÚF/usr/lib/python3/dist-packages/twisted/internet/iocpreactor/reactor.pyr   ÚIOCPReactor.__init__<   s/   € Ü×Ñ×!Ñ! $Ô'Ü×(Ò(Ó*ˆŒ	Ü“uˆŽó    c                ó<   € V P                   P                  V4       R # r   )r   Úadd©r   Úhandles   &&r    ÚaddActiveHandleÚIOCPReactor.addActiveHandleA   s   € Ø�‰×Ñ˜Ö r"   c                ó<   € V P                   P                  V4       R # r   )r   Údiscardr%   s   &&r    ÚremoveActiveHandleÚIOCPReactor.removeActiveHandleD   s   € Ø�‰×Ñ˜VÖ$r"   c                óª  € ^ pVf   \         pM \        \         \        RV,          4      4      pV P                  P	                  V4      w  r4rV V\
        8X  d   R# V\        8w  dD   V\        8X  g   Q h\        P                  ! VP                  V P                  W4V4       V^,          pV\        8¼  d   R# V P                  P	                  ^ 4      w  r4rVK‰  )z-
Poll the IO completion port for new events.
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    ÚdoIterationÚIOCPReactor.doIterationG   sº   € ð2 ÐØŠ?Ü!‰Gäœ+¤s¨4°'­>Ó':Ó;ˆGØ!%§¡×!3Ñ!3°GÓ!<Ñˆ�cØØ”\Ô!ÙØ”jÔ ØœjÔ(Ð(Ð(Ü×"Ò"Ø—I‘I˜t×6Ñ6¸Àcôð ! AÕ%Ð Ø¤?Ô2ÙØ%)§Y¡Y×%7Ñ%7¸Ó%:Ñ"ˆB˜#™sr"   c                óœ  € VP                   pR p VP                  WV4       \        VRR 4      pV'       g   \        pMV! 4       R8X  d   \        pV'       d   R #  V'       d(   VP                  \        P                  ! V4      4       R # R #   \
         d5    \        P                  ! 4       ^,          p\        P                  ! 4         Loi ; i)NÚgetFileHandleéÿÿÿÿ)r5   ÚcallbackÚgetattrÚ_NO_GETHANDLEÚ_NO_FILEDESCÚBaseExceptionÚsysÚexc_infor   ÚerrÚloseConnectionr   ÚFailure)r   r:   r;   r=   r5   ÚwhyÚhandfns   &&&&   r    r6   ÚIOCPReactor._callEventCallbacks   s�   € Ø—	‘	ˆØˆð	Ø�L‰L˜ sÔ+Ü˜U O°TÓ:ˆFßÜ#‘Ù“˜R”Ü"�ßÙð ÷
 Ø× Ñ ¤§¢°Ó!5Ö6ñ øô ô 	Ü—,’,“. Õ#ˆCÜ�GŠGŽIð	ús   �AB Â<CÃ
Cc                ó   € R # r   © r   s   &r    ÚinstallWakerÚIOCPReactor.installWaker…   s   € Ùr"   c                óH   € V P                   P                  ^ \        R4       R# )é    N)r   Ú	postEventr2   r   s   &r    ÚwakeUpÚIOCPReactor.wakeUpˆ   s   € Ø�	‰	×Ñ˜Aœz¨4Ö0r"   c                óF   € V P                   P                  V\        4       R # r   )r   Ú	addHandler3   r%   s   &&r    ÚregisterHandleÚIOCPReactor.registerHandle‹   s   € Ø�	‰	×Ñ˜F¤JÖ/r"   c                óh   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[ P                   /# )é   ÚafÚstypeÚreturn)ÚsocketÚAddressFamilyÚ
SocketKind)ÚformatÚ__classdict__s   "€r    Ú__annotate__ÚIOCPReactor.__annotate__Ž   s5   ø€ ÷ ñ Ù×&Ñ&ðÙ/5×/@Ñ/@ðá	�‰ñr"   c                óp   € \         P                   ! W4      pV P                  VP                  4       4       V# r   )rb   r[   Úfileno)r   r_   r`   Úskts   &&& r    ÚcreateSocketÚIOCPReactor.createSocketŽ   s+   € ô �mŠm˜BÓ&ˆØ×Ñ˜CŸJ™J›LÔ)Øˆ
r"   c                óV   € \         P                  ! WW4V 4      pVP                  4        V# )z9
@see: twisted.internet.interfaces.IReactorTCP.listenTCP
)r   ÚPortÚstartListening)r   r   ÚfactoryÚbacklogÚ	interfaceÚps   &&&&& r    Ú	listenTCPÚIOCPReactor.listenTCP•   s'   € ô �HŠH�T G¸Ó=ˆØ	×ÑÔØˆr"   c                óV   € \         P                  ! WW4WP4      pVP                  4        V# )z:
@see: twisted.internet.interfaces.IReactorTCP.connectTCP
)r   Ú	ConnectorÚconnect)r   Úhostr   rq   r8   ÚbindAddressÚcs   &&&&&& r    Ú
connectTCPÚIOCPReactor.connectTCP�   s$   € ô �MŠM˜$ g¸ÓJˆØ	�	‰	ŒØˆr"   c                óR   € V P                  V\        VRV4      VV4      pRVn        V# )z9
@see: twisted.internet.interfaces.IReactorSSL.listenSSL
FÚTLS)ru   r   Ú_type©r   r   rq   ÚcontextFactoryrr   rs   s   &&&&&&r    Ú	listenSSLÚIOCPReactor.listenSSL§   s5   € ð —>‘>ØÜ# N°E¸7ÓCØØó	ˆDð ˆDŒJØˆKr"   c           	     óB   € V P                  VV\        VRV4      VV4      # )z:
@see: twisted.internet.interfaces.IReactorSSL.connectSSL
T)r}   r   ©r   rz   r   rq   rƒ   r8   r{   s   &&&&&&&r    Ú
connectSSLÚIOCPReactor.connectSSL´   s-   € ð —?‘?ØØÜ# N°D¸'ÓBØØóð r"   c                ó   € \        R4      h)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.©ÚNotImplementedErrorr‚   s   &&&&&&r    r„   r…   Ä   s   € ô &ðóð r"   c                ó   € \        R4      h)z�
Non-implementation of L{IReactorSSL.connectSSL}.  Some dependency
is not satisfied.  This implementation always raises
L{NotImplementedError}.
r‹   rŒ   r‡   s   &&&&&&&r    rˆ   r‰   Ð   s   € ô &ðóð r"   c                óV   € \         P                  ! WW4V 4      pVP                  4        V# )zx
Connects a given L{DatagramProtocol} to the given numeric UDP port.

@returns: object conforming to L{IListeningPort}.
)r   ro   rp   )r   r   Úprotocolrs   ÚmaxPacketSizert   s   &&&&& r    Ú	listenUDPÚIOCPReactor.listenUDPÞ   s'   € ô �HŠH�T Y¸tÓDˆØ	×ÑÔØˆr"   c                óV   € \         P                  ! WW4W4      pVP                  4        V# )z�
Connects a given DatagramProtocol to the given numeric UDP port.

EXPERIMENTAL.

@returns: object conforming to IListeningPort.
)r   ÚMulticastPortrp   )r   r   r�   rs   r‘   ÚlistenMultiplert   s   &&&&&& r    ÚlistenMulticastÚIOCPReactor.listenMulticastè   s.   € ô ×ÒØ˜I°dó
ˆð 	
×ÑÔØˆr"   c
                óœ   € Ve   \        R4      hVe   \        R4      hV'       d   \        R4      hV	e   \        R4      h\        WW#WE4      # )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    ÚspawnProcessÚIOCPReactor.spawnProcessø   s^   € ð Š?ÜÐKÓLÐLØŠ?ÜÐKÓLÐLßÜÐEÓFÐFØÒÜð!óð ô �t¨jÀÓJÐJr"   c                ód   € \        V P                  4      pV P                  P                  4        V# r   )Úlistr   Úclear)r   Úress   & r    Ú	removeAllÚIOCPReactor.removeAll  s%   € Ü�4—<‘<Ó ˆØ�‰×ÑÔØˆ
r"   )r   r   )é2   Ú )é   N)r­   é    )r­   r¯   FrQ   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r   r'   r+   r>   r6   rR   rW   r[   rl   ru   r}   r   r„   rˆ   r’   r—   r¤   rª   Ú__static_attributes__Ú__classdictcell__)rf   s   @r    r   r   2   s–   ø‡ € ð €Dòò
!ò%ò*;òX7ò$ò1ò0÷ð ôôð Ò&ô	õ	ô 
	ô	ôôð( ØØØØØØôK÷8ð r"   r   c                  óF   € \        4       p \        P                  ! V 4       R # r   )r   r   ÚinstallReactor)Úrs    r    Úinstallr¹     s   € Ü‹€AÜ×Ò˜Ör"   r¹   c                ó„   € V ^8„  d   Qh/ ^ \         9   d,   \        \        \        P                  ,          R3,          ;R&   # )r^   .Ú_extraInterfaces)Ú__conditional_annotations__r   r   r   ÚIReactorSSL)re   s   "r    rg   rg      s4   € ÷ ñ ÷2 DÒC”eœD¤×!7Ñ!7Õ8¸#Ð=Õ>ÑCò3r"   rQ   )5r¼   Ú__doc__rb   rH   Ú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   Ú_TLSMemoryBIOFactoryr½   r»   ÚImportErrorÚwarnr.   r7   Úranger3   r2   ÚConnectionFdescWentAwayrE   rF   ÚIReactorTCPÚIReactorUDPÚIReactorMulticastÚIReactorProcessr   r   r¹   Ú__all__rg   )r¼   s   @r    Ú<module>rÓ      s2  øðö
ó
 Û 
Û ß å &ç :Ó :Ý 3ß GÑ GÝ ;Ý Hß 'ð1ÝQð /ÐØ"×.Ñ.Ð0Ðà€à€ñ ˜q›Ñ €
ˆJà×-Ò-Ð.SÓT€Ø×,Ò,Ð-GÓH€ñ Ø×ÑØ×ÑØ× Ñ Ø×Ñð	ð
 óô^�$×"Ñ"Ð$=ó ^óð^òBð
 ˜)Ð
$‚øðK ô ØÐð BDÐÓCØ‡M‚Mð	Cöðús   ÁC3 Ã3!DÄD