+
    üÐj÷!  ã                   óÒ   € R t ^ RIHt ^ RIHtHt RtRt ! R R4      t ! R R4      t	^ R	I
t
^ R	It^ R	It^ R	It]! ]4       ! R
 R]4      4       tRt]! ]4       ! R R]4      4       tR	# )zˆ
Implements a simple polling interface for file descriptors that don't work with
select() - this is pretty much only useful on Windows.
)Úimplementer)Ú	IConsumerÚIPushProducerg•Ö&è.>gš™™™™™¹?c                   ó0   a € ] tR t^t o RtR tR tRtV tR# )Ú_PollableResourceTc                ó   € R V n         R# ©TN©Úactive©Úselfs   &Ú?/usr/lib/python3/dist-packages/twisted/internet/_pollingfile.pyÚactivateÚ_PollableResource.activate   s	   € ØˆŽó    c                ó   € R V n         R# ©FNr	   r   s   &r   Ú
deactivateÚ_PollableResource.deactivate   s	   € ØˆŽr   r	   N)	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r
   r   r   Ú__static_attributes__Ú__classdictcell__©Ú__classdict__s   @r   r   r      s   ø‡ € Ø€Fò÷ð r   r   c                   óV   a € ] tR t^t o R tR tR tR tR tR t	R t
R tR	 tR
tV tR# )Ú_PollingTimerc                óR   € Wn         . V n        R V n        \        V n        RV n        R # )NF)ÚreactorÚ
_resourcesÚ
_pollTimerÚMAX_TIMEOUTÚ_currentTimeoutÚ_paused)r   r    s   &&r   Ú__init__Ú_PollingTimer.__init__    s$   € ØŒØˆŒØˆŒÜ*ˆÔØˆŽr   c                ó\   € V P                   P                  V4       V P                  4        R # ©N)r!   ÚappendÚ_checkPollingState)r   Úress   &&r   Ú_addPollableResourceÚ"_PollingTimer._addPollableResource'   s    € Ø�‰×Ñ˜sÔ#Ø×ÑÖ!r   c                ó–   € V P                    F(  pVP                  '       g   K  V P                  4         R # 	  V P                  4        R # r)   )r!   r
   Ú_startPollingÚ_stopPolling)r   Úresources   & r   r+   Ú _PollingTimer._checkPollingState+   s6   € ØŸœˆHØ��ŠØ×"Ñ"Ô$Úñ (ð
 ×ÑÖr   c                óP   € V P                   f   V P                  4       V n         R # R # r)   )r"   Ú_rescheduler   s   &r   r0   Ú_PollingTimer._startPolling3   s!   € Ø�?‰?Ò"Ø"×.Ñ.Ó0ˆDŽOñ #r   c                óh   € V P                   e$   V P                   P                  4        R V n         R # R # r)   )r"   Úcancelr   s   &r   r1   Ú_PollingTimer._stopPolling7   s(   € Ø�?‰?Ò&Ø�O‰O×"Ñ"Ô$Ø"ˆDŽOñ 'r   c                ó   € R V n         R# r   )r%   r   s   &r   Ú_pauseÚ_PollingTimer._pause<   s	   € ØˆŽr   c                ó4   € R V n         V P                  4        R# r   )r%   r+   r   s   &r   Ú_unpauseÚ_PollingTimer._unpause?   s   € ØˆŒØ×ÑÖ!r   c                óŠ   € V P                   '       g1   V P                  P                  V P                  V P                  4      # R # r)   )r%   r    Ú	callLaterr$   Ú
_pollEventr   s   &r   r5   Ú_PollingTimer._rescheduleC   s1   € Ø�|�|ˆ|Ø—<‘<×)Ñ)¨$×*>Ñ*>ÀÇÁÓPÐPñ r   c                óä  € R p. pV P                    FR  pVP                  '       g   K  WP                  4       ,          pVP                  '       g   KA  VP                  V4       KT  	  V P                  pV'       d-   V P                  VR,           ,          pV\
        8  d   \
        pM$V P                  R,          pV\        8”  d   \        pW@n        V'       d   V P                  4       V n        R# R# )g        g      ð?g       @N)	r!   r
   Ú	checkWorkr*   r$   ÚMIN_TIMEOUTr#   r5   r"   )r   Ú	workUnitsÚ	anyActiver2   Ú
newTimeouts   &    r   rB   Ú_PollingTimer._pollEventG   s¸   € Øˆ	Øˆ	ØŸœˆHØ��ŠØ×/Ñ/Ó1Õ1�	à—?—?’?Ø×$Ñ$ XÖ.ñ (ð ×)Ñ)ˆ
ßØ×-Ñ-°¸SµÕAˆJØœKÔ'Ü(�
øà×-Ñ-°Õ3ˆJØœKÔ'Ü(�
Ø)ÔßØ"×.Ñ.Ó0ˆDŽOñ r   )r$   r%   r"   r!   r    N)r   r   r   r   r&   r-   r+   r0   r1   r;   r>   r5   rB   r   r   r   s   @r   r   r      s8   ø‡ € òò"ò ò1ò#ò
ò"òQ÷1ð 1r   r   Nc                   óJ   a € ] tR t^ht o R tR tR tR tR tR t	R t
RtV tR	# )
Ú_PollableReadPipec                ó*   € Wn         W n        W0n        R # r)   )ÚpipeÚreceivedCallbackÚlostCallback)r   rN   rO   rP   s   &&&&r   r&   Ú_PollableReadPipe.__init__j   s   € àŒ	Ø 0ÔØ(Ör   c                ó¬  € ^ p. p  \         P                  ! V P                  ^4      w  r4pV'       g   M7\        P                  ! V P                  VR4      w  rgVP                  V4       Kf  RP                  V4      pV'       d   V P                  V4       V'       d   V P                  4        \        V4      #   \        P                   d    ^p Kg  i ; i)é    Nr   )Ú	win32pipeÚPeekNamedPiperN   Ú	win32fileÚReadFiler*   Úwin32apiÚerrorÚjoinrO   ÚcleanupÚlen)	r   ÚfinishedÚfullDataReadÚbufferÚbytesToReadÚresultÚhrÚdataÚdataBufs	   &        r   rE   Ú_PollableReadPipe.checkWorkp   s²   € ØˆØˆàð	Ü.7×.EÒ.EÀdÇiÁiÐQRÓ.SÑ+� Vç"ØÜ$×-Ò-¨d¯i©i¸ÀdÓK‘�Ø×#Ñ# DÖ)ð
 —(‘(˜<Ó(ˆßØ×!Ñ! 'Ô*ßØ�L‰LŒNÜ�7‹|Ðøô —>‘>ô Ø�Úðús   ‡,B8 ´5B8 Â8CÃCc                óF   € V P                  4        V P                  4        R # r)   )r   rP   r   s   &r   r[   Ú_PollableReadPipe.cleanup‡   s   € Ø�‰ÔØ×ÑÖr   c                ó€   €  \         P                  ! V P                  4       R #   \        P                   d     R # i ; ir)   )rX   ÚCloseHandlerN   Ú
pywintypesrY   r   s   &r   ÚcloseÚ_PollableReadPipe.close‹   s1   € ð	Ü× Ò  §¡Ö+øÜ×Ñô 	âð	ús   ‚ $ ¤=¼=c                ó&   € V P                  4        R # r)   )rk   r   s   &r   ÚstopProducingÚ_PollableReadPipe.stopProducing’   s   € Ø�
‰
Žr   c                ó&   € V P                  4        R # r)   )r   r   s   &r   ÚpauseProducingÚ _PollableReadPipe.pauseProducing•   s   € Ø�‰Ör   c                ó&   € V P                  4        R # r)   )r   r   s   &r   ÚresumeProducingÚ!_PollableReadPipe.resumeProducing˜   s   € Ø�‰Žr   )rP   rN   rO   N)r   r   r   r   r&   rE   r[   rk   rn   rq   rt   r   r   r   s   @r   rL   rL   h   s-   ø‡ € ò)òò.òòò÷ð r   rL   c                   ó\   a € ] tR t^Ÿt o R tR tR tR tR tR t	R t
R tR	 tR
 tRtV tR# )Ú_PollableWritePipec                óì   € R V n         RV n        R V n        ^ V n        . V n        Wn        W n         \        P                  ! V\        P                  RR4       R#   \        P                   d     R# i ; ir   )ÚdisconnectingÚproducerÚproducerPausedÚstreamingProducerÚoutQueueÚ	writePiperP   rT   ÚSetNamedPipeHandleStateÚPIPE_NOWAITrj   rY   )r   r~   rP   s   &&&r   r&   Ú_PollableWritePipe.__init__¡   so   € Ø"ˆÔØˆŒØ#ˆÔØ!"ˆÔØˆŒØ"ŒØ(Ôð	Ü×-Ò-Øœ9×0Ñ0°$¸öøô ×Ñô 	âð	ús   ±'A ÁA3Á2A3c                ó   € R V n         R# r   )ry   r   s   &r   rk   Ú_PollableWritePipe.close±   s
   € Ø!ˆÖr   c                óh   € V P                   e$   RV n        V P                   P                  4        R # R # )NT)rz   r{   rq   r   s   &r   Ú
bufferFullÚ_PollableWritePipe.bufferFull´   s)   € Ø�=‰=Ò$Ø"&ˆDÔØ�M‰M×(Ñ(Ö*ñ %r   c                óÄ   € V P                   eR   V P                  '       d   V P                  '       d.   RV P                   n        V P                   P                  4        R# R# )NFT)rz   r|   r{   rt   r   s   &r   ÚbufferEmptyÚ_PollableWritePipe.bufferEmpty¹   sE   € Ø�=‰=Ò$Ø×'×'Ð'¨D×,?×,?Ð,?à+0ˆD�M‰MÔ(Ø�M‰M×)Ñ)Ô+ÙÙr   c                óò   € V P                   e   \        RV: RV P                   : R24      hV P                  '       g   VP                  4        R# Wn         W n        V'       g   VP                  4        R# R# )aG  Register to receive data from a producer.

This sets this selectable to be a consumer for a producer.  When this
selectable runs out of data on a write() call, it will ask the producer
to resumeProducing(). A producer should implement the IProducer
interface.

FileDescriptor provides some infrastructure for producer methods.
NzCannot register producer z, because producer z was never unregistered.)rz   ÚRuntimeErrorr
   rn   r|   rt   )r   rz   Ú	streamings   &&&r   ÚregisterProducerÚ#_PollableWritePipe.registerProducerÄ   s_   € ð �=‰=Ò$Ýã#+¨T¯]¬]ð<óð ð �{�{ˆ{Ø×"Ñ"Ö$à$ŒMØ%.Ô"ßØ×(Ñ(Ö*ñ r   c                ó   € RV n         R# )z;Stop consuming data from a producer, without disconnecting.N)rz   r   s   &r   ÚunregisterProducerÚ%_PollableWritePipe.unregisterProducerÛ   s	   € àˆŽr   c                ó¾   € V P                  4         \        P                  ! V P                  4       V P                  4        R #   \        P
                   d     L)i ; ir)   )r   rX   ri   r~   rj   rY   rP   r   s   &r   ÚwriteConnectionLostÚ&_PollableWritePipe.writeConnectionLostß   sK   € Ø�‰Ôð	Ü× Ò  §¡Ô0ð 	×ÑÖøô ×Ñô 	áð	ús   ’ A ÁAÁAc                ó„   € \         \        \        V4      9   d   \        R4      hV P                  P                  V4       R# )zÍ
Append a C{list} or C{tuple} of bytes to the output buffer.

@param seq: C{list} or C{tuple} of C{str} instances to be appended to
    the output buffer.

@raise TypeError: If C{seq} contains C{unicode}.
ú%Unicode not allowed in output buffer.N)ÚstrÚmapÚtypeÚ	TypeErrorr}   Úextend)r   Úseqs   &&r   ÚwriteSequenceÚ _PollableWritePipe.writeSequenceè   s0   € ô ”#”d˜C“.Ô ÜÐCÓDÐDØ�‰×Ñ˜SÖ!r   c                ó"  € \        V\        4      '       d   \        R4      hV P                  '       d   R# V P                  P                  V4       \        \        \        V P                  4      4      \        8”  d   V P                  4        R# R# )z¶
Append some bytes to the output buffer.

@param data: C{str} to be appended to the output buffer.
@type data: C{str}.

@raise TypeError: If C{data} is C{unicode} instead of C{str}.
r–   N)Ú
isinstancer—   rš   ry   r}   r*   Úsumr˜   r\   ÚFULL_BUFFER_SIZEr…   )r   rc   s   &&r   ÚwriteÚ_PollableWritePipe.writeõ   sf   € ô �dœC× Ò ÜÐCÓDÐDØ××ÐÙØ�‰×Ñ˜TÔ"ÜŒs”3˜Ÿ™Ó&Ó'Ô*:Ô:Ø�O‰OÖñ ;r   c                ó   € ^ pV P                   '       gH   V P                  '       d   V P                  4        ^ #  \        P                  ! V P
                  RR4       V P                   '       d~   V P                   P                  ^ 4      p^ p \        P                  ! V P
                  VR4      w  r4W,          p\        V4      V8”  d"   V P                   P                  ^ W$R 4        V# K�  V P                  4       pV'       g#   V P                  '       d   V P                  4        V#   \        P                   d    T P                  4        Tu # i ; i  \        P                   d    T P                  4         T# i ; i)rS   r   N)r}   ry   r“   rV   Ú	WriteFiler~   rj   rY   Úpopr\   ÚinsertrX   rˆ   )r   ÚnumBytesWrittenrc   ÚerrCodeÚnBytesWrittenÚresumeds   &     r   rE   Ú_PollableWritePipe.checkWork  sN  € ØˆØ�}�}ˆ}Ø×!×!Ð!Ø×(Ñ(Ô*Ùð'Ü×#Ò# D§N¡N°C¸Ô>ð �m�mˆmØ—=‘=×$Ñ$ QÓ'ˆDØˆGð
Ü)2×)<Ò)<¸T¿^¹^ÈTÐSWÓ)XÑ&�ð  Õ0�Ü�t“9˜}Ô,Ø—M‘M×(Ñ(¨¨D°Ð,@ÔAØð
 Ðñ -ð ×&Ñ&Ó(ˆGß˜t×1×1Ð1Ø×(Ñ(Ô*ØÐøô+ ×#Ñ#ô 'Ø×(Ñ(Ô*Ø&Ò&ð'ûô —>‘>ô Ø×(Ñ(Ô*Øð Ððús#   º"D' Â$E Ä''EÅEÅ%E=Å<E=)ry   rP   r}   rz   r{   r|   r~   N)r   r   r   r   r&   rk   r…   rˆ   r�   r�   r“   r�   r£   rE   r   r   r   s   @r   rw   rw   Ÿ   s<   ø‡ € òò "ò+ò
ò+ò.òò"ò÷"ð r   rw   i   )Ú__doc__Úzope.interfacer   Útwisted.internet.interfacesr   r   rF   r#   r   r   rj   rX   rV   rT   rL   r¢   rw   © r   r   Ú<module>r²      s�   ðñ
õ 'ç @à€Ø€÷ñ ÷?1ñ ?1óJ Û Û Û ñ ˆ]Óô0Ð)ó 0ó ð0ðf Ð ñ ˆYÓôCÐ*ó Có òCr   