ó
    Ö›‘h÷!  ã                   óÐ   • S r SSKJr  SSKJrJr  SrSr " S S5      r " S S	5      r	SS
K
r
SS
KrSS
KrSS
Kr\" \5       " S S\5      5       rSr\" \5       " S S\5      5       rg
)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                   ó$   • \ rS rSrSrS rS rSrg)Ú_PollableResourceé   Tc                 ó   • SU l         g ©NT©Úactive©Úselfs    ÚaC:\Users\psant\Downloads\Noiseback\school\venv\Lib\site-packages\twisted/internet/_pollingfile.pyÚactivateÚ_PollableResource.activate   s	   € Øˆ�ó    c                 ó   • SU l         g ©NFr   r   s    r   Ú
deactivateÚ_PollableResource.deactivate   s	   € Øˆ�r   r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r   r   Ú__static_attributes__© r   r   r   r      s   † Ø€Fòõr   r   c                   óJ   • \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rSrg)Ú_PollingTimeré   c                 óP   • Xl         / U l        S U l        [        U l        SU l        g r   )ÚreactorÚ
_resourcesÚ
_pollTimerÚMAX_TIMEOUTÚ_currentTimeoutÚ_paused)r   r!   s     r   Ú__init__Ú_PollingTimer.__init__    s$   € ØŒØˆŒØˆŒÜ*ˆÔØˆ�r   c                 óZ   • U R                   R                  U5        U R                  5         g ©N)r"   ÚappendÚ_checkPollingState)r   Úress     r   Ú_addPollableResourceÚ"_PollingTimer._addPollableResource'   s    € Ø�‰×Ñ˜sÔ#Ø×ÑÕ!r   c                 ó�   • U R                    H&  nUR                  (       d  M  U R                  5           g    U R                  5         g r*   )r"   r   Ú_startPollingÚ_stopPolling)r   Úresources     r   r,   Ú _PollingTimer._checkPollingState+   s6   € ØŸœˆHØ��‰Ø×"Ñ"Ô$Ùñ (ð
 ×ÑÕr   c                 óJ   • U R                   c  U R                  5       U l         g g r*   )r#   Ú_rescheduler   s    r   r1   Ú_PollingTimer._startPolling3   s!   € Ø�?‰?Ñ"Ø"×.Ñ.Ó0ˆD�Oð #r   c                 ób   • U R                   b"  U R                   R                  5         S U l         g g r*   )r#   Úcancelr   s    r   r2   Ú_PollingTimer._stopPolling7   s(   € Ø�?‰?Ñ&Ø�O‰O×"Ñ"Ô$Ø"ˆD�Oð 'r   c                 ó   • SU l         g r
   )r&   r   s    r   Ú_pauseÚ_PollingTimer._pause<   s	   € Øˆ�r   c                 ó2   • SU l         U R                  5         g r   )r&   r,   r   s    r   Ú_unpauseÚ_PollingTimer._unpause?   s   € ØˆŒØ×ÑÕ!r   c                 ó†   • U R                   (       d0  U R                  R                  U R                  U R                  5      $ g r*   )r&   r!   Ú	callLaterr%   Ú
_pollEventr   s    r   r6   Ú_PollingTimer._rescheduleC   s/   € Ø�|�|Ø—<‘<×)Ñ)¨$×*>Ñ*>ÀÇÁÓPÐPð r   c                 ó´  • Sn/ nU R                    HL  nUR                  (       d  M  XR                  5       -  nUR                  (       d  M;  UR                  U5        MN     U R                  nU(       a#  U R                  US-   -  nU[
        :  a  [
        nOU R                  S-  nU[        :”  a  [        nX@l        U(       a  U R                  5       U l        g g )Ng        g      ð?g       @)	r"   r   Ú	checkWorkr+   r%   ÚMIN_TIMEOUTr$   r6   r#   )r   Ú	workUnitsÚ	anyActiver3   Ú
newTimeouts        r   rC   Ú_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,   r1   r2   r<   r?   r6   rC   r   r   r   r   r   r      s0   † òò"ò ò1ò#ò
ò"òQõ1r   r   Nc                   ó>   • \ rS rSrS rS rS rS rS rS r	S r
S	rg
)Ú_PollableReadPipeéh   c                 ó(   • Xl         X l        X0l        g r*   )ÚpipeÚreceivedCallbackÚlostCallback)r   rP   rQ   rR   s       r   r'   Ú_PollableReadPipe.__init__j   s   € àŒ	Ø 0ÔØ(Õr   c                 ó¤  • Sn/ n  [         R                  " U R                  S5      u  p4nU(       d  O7[        R                  " U R                  US 5      u  pgUR                  U5        Md  SR                  U5      nU(       a  U R                  U5        U(       a  U R                  5         [        U5      $ ! [        R                   a    Sn Md  f = f)Nr   é   r   )Ú	win32pipeÚPeekNamedPiperP   Ú	win32fileÚReadFiler+   Úwin32apiÚerrorÚjoinrQ   ÚcleanupÚlen)	r   ÚfinishedÚfullDataReadÚbufferÚbytesToReadÚresultÚhrÚdataÚdataBufs	            r   rF   Ú_PollableReadPipe.checkWorkp   s·   € ØˆØˆàð	Ü.7×.EÒ.EÀdÇiÁiÐQRÓ.SÑ+� Væ"ØÜ$×-Ò-¨d¯i©i¸ÀdÓK‘�Ø×#Ñ# DÔ)ñ ð —(‘(˜<Ó(ˆÞØ×!Ñ! 'Ô*ÞØ�L‰LŒNÜ�7‹|Ðøô —>‘>ó Ø�Úðús   ‡+B5 ³5B5 Â5CÃCc                 óD   • U R                  5         U R                  5         g r*   )r   rR   r   s    r   r]   Ú_PollableReadPipe.cleanup‡   s   € Ø�‰ÔØ×ÑÕr   c                 óz   •  [         R                  " U R                  5        g ! [        R                   a     g f = fr*   )rZ   ÚCloseHandlerP   Ú
pywintypesr[   r   s    r   ÚcloseÚ_PollableReadPipe.close‹   s1   € ð	Ü× Ò  §¡Õ+øÜ×Ñó 	áð	ús   ‚ # £:¹:c                 ó$   • U R                  5         g r*   )rm   r   s    r   ÚstopProducingÚ_PollableReadPipe.stopProducing’   s   € Ø�
‰
�r   c                 ó$   • U R                  5         g r*   )r   r   s    r   ÚpauseProducingÚ _PollableReadPipe.pauseProducing•   s   € Ø�‰Õr   c                 ó$   • U R                  5         g r*   )r   r   s    r   ÚresumeProducingÚ!_PollableReadPipe.resumeProducing˜   s   € Ø�‰�r   )rR   rP   rQ   N)r   r   r   r   r'   rF   r]   rm   rp   rs   rv   r   r   r   r   rM   rM   h   s%   † ò)òò.òòòõr   rM   i   c                   óP   • \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rSrg)Ú_PollableWritePipeéŸ   c                 óæ   • SU l         S U l        SU l        SU l        / U l        Xl        X l         [        R                  " U[        R                  S S 5        g ! [        R                   a     g f = f)NFr   )ÚdisconnectingÚproducerÚproducerPausedÚstreamingProducerÚoutQueueÚ	writePiperR   rV   ÚSetNamedPipeHandleStateÚPIPE_NOWAITrl   r[   )r   r�   rR   s      r   r'   Ú_PollableWritePipe.__init__¡   so   € Ø"ˆÔØˆŒØ#ˆÔØ!"ˆÔØˆŒØ"ŒØ(Ôð	Ü×-Ò-Øœ9×0Ñ0°$¸õøô ×Ñó 	áð	ús   ±'A ÁA0Á/A0c                 ó   • SU l         g r
   )r|   r   s    r   rm   Ú_PollableWritePipe.close±   s
   € Ø!ˆÕr   c                 ób   • U R                   b"  SU l        U R                   R                  5         g g r
   )r}   r~   rs   r   s    r   Ú
bufferFullÚ_PollableWritePipe.bufferFull´   s)   € Ø�=‰=Ñ$Ø"&ˆDÔØ�M‰M×(Ñ(Õ*ð %r   c                 óº   • U R                   bN  U R                  (       a  U R                  (       a,  SU R                   l        U R                   R                  5         gg)NFT)r}   r   r~   rv   r   s    r   ÚbufferEmptyÚ_PollableWritePipe.bufferEmpty¹   s?   € Ø�=‰=Ñ$Ø×'×'¨D×,?×,?à+0ˆD�M‰MÔ(Ø�M‰M×)Ñ)Ô+ØØr   c                 óæ   • U R                   b  [        SU< SU R                   < S35      eU R                  (       d  UR                  5         gXl         X l        U(       d  UR                  5         gg)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.)r}   ÚRuntimeErrorr   rp   r   rv   )r   r}   Ú	streamings      r   ÚregisterProducerÚ#_PollableWritePipe.registerProducerÄ   s]   € ð �=‰=Ñ$Ýã#+¨T¯]¬]ð<óð ð �{�{Ø×"Ñ"Õ$à$ŒMØ%.Ô"ÞØ×(Ñ(Õ*ð r   c                 ó   • SU l         g)z;Stop consuming data from a producer, without disconnecting.N)r}   r   s    r   ÚunregisterProducerÚ%_PollableWritePipe.unregisterProducerÛ   s	   € àˆ�r   c                 óº   • U R                  5          [        R                  " U R                  5        U R                  5         g ! [        R
                   a     N'f = fr*   )r   rZ   rk   r�   rl   r[   rR   r   s    r   ÚwriteConnectionLostÚ&_PollableWritePipe.writeConnectionLostß   sK   € Ø�‰Ôð	Ü× Ò  §¡Ô0ð 	×ÑÕøô ×Ñó 	áð	ús   ’ A ÁAÁAc                 ó€   • [         [        [        U5      ;   a  [        S5      eU R                  R                  U5        g)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                 ó  • [        U[        5      (       a  [        S5      eU R                  (       a  gU R                  R                  U5        [        [        [        U R                  5      5      [        :”  a  U R                  5         gg)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�   r|   r€   r+   Úsumr›   r^   ÚFULL_BUFFER_SIZErˆ   )r   re   s     r   ÚwriteÚ_PollableWritePipe.writeõ   sc   € ô �dœC× Ñ ÜÐCÓDÐDØ××ØØ�‰×Ñ˜TÔ"ÜŒs”3˜Ÿ™Ó&Ó'Ô*:Ó:Ø�O‰OÕð ;r   c                 ó
  • SnU R                   (       dE  U R                  (       a  U R                  5         g [        R                  " U R
                  SS 5        U R                   (       aŠ  U R                   R                  S5      nSn [        R                  " U R
                  US 5      u  p4X-  n[        U5      U:”  a!  U R                   R                  SX$S  5         U$  U R                   (       a  MŠ  U R                  5       nU(       d!  U R                  (       a  U R                  5         U$ ! [        R                   a    U R                  5         Us $ f = f! [        R                   a    U R                  5          U$ f = f)Nr   r   )r€   r|   r–   rX   Ú	WriteFiler�   rl   r[   Úpopr^   ÚinsertrZ   r‹   )r   ÚnumBytesWrittenre   ÚerrCodeÚnBytesWrittenÚresumeds         r   rF   Ú_PollableWritePipe.checkWork  sO  € ØˆØ�}�}Ø×!×!Ø×(Ñ(Ô*Øð'Ü×#Ò# D§N¡N°C¸Ô>ð �m�mØ—=‘=×$Ñ$ QÓ'ˆDØˆGð
Ü)2×)<Ò)<¸T¿^¹^ÈTÐSWÓ)XÑ&�ð  Ñ0�Ü�t“9˜}Ó,Ø—M‘M×(Ñ(¨¨D°Ð,@ÔAØð
 Ðð -ð �m�m‰mð ×&Ñ&Ó(ˆGÞ˜t×1×1Ø×(Ñ(Ô*ØÐøô+ ×#Ñ#ó 'Ø×(Ñ(Ô*Ø&Ò&ð'ûô —>‘>ó Ø×(Ñ(Ô*Øð Ððús#   ·"D. Â$E Ä.&EÅEÅ$FÆF)r|   rR   r€   r}   r~   r   r�   N)r   r   r   r   r'   rm   rˆ   r‹   r�   r“   r–   r    r¦   rF   r   r   r   r   ry   ry   Ÿ   s4   † òò "ò+ò
ò+ò.òò"òõ"r   ry   )Ú__doc__Úzope.interfacer   Útwisted.internet.interfacesr   r   rG   r$   r   r   rl   rZ   rX   rV   rM   r¥   ry   r   r   r   Ú<module>r´      s�   ðñ
õ 'ç @à€Ø€÷ñ ÷?1ñ ?1óJ Û Û Û ñ ˆ]Óô0Ð)ó 0ó ð0ðf Ð ñ ˆYÓôCÐ*ó Có ñCr   