+
    üÐjV  ã                   óÊ   € R t ^ RIt^ RIHtHtHtHtHtHt	H
t
 ^ RIHt ^ RIHt ^ RIHt ^ RIHt ]! ]4       ! R R]P&                  ]P(                  4      4       tR	 tRR
.tR# )zñ
A poll() based implementation of the twisted main loop.

To install the event loop (and you should do this before any connections,
listeners or connectors are added)::

    from twisted.internet import pollreactor
    pollreactor.install()
N)ÚPOLLERRÚPOLLHUPÚPOLLINÚPOLLNVALÚPOLLOUTÚerrorÚpoll)Úimplementer)Ú	posixbase)ÚIReactorFDSet)Úlogc                   ó’   a € ] tR t^$t o Rt]],          ],          t]	t
]tR tR tR tR tR tR tR tR	 tR
 t]tR tR tRtV tR# )ÚPollReactora  
A reactor that uses poll(2).

@ivar _poller: A L{select.poll} which will be used to check for I/O
    readiness.

@ivar _selectables: A dictionary mapping integer file descriptors to
    instances of L{FileDescriptor} which have been registered with the
    reactor.  All L{FileDescriptor}s which are currently receiving read or
    write readiness notifications will be present as values in this
    dictionary.

@ivar _reads: A dictionary mapping integer file descriptors to arbitrary
    values (this is essentially a set).  Keys in this dictionary will be
    registered with C{_poller} for read readiness notifications which will
    be dispatched to the corresponding L{FileDescriptor} instances in
    C{_selectables}.

@ivar _writes: A dictionary mapping integer file descriptors to arbitrary
    values (this is essentially a set).  Keys in this dictionary will be
    registered with C{_poller} for write readiness notifications which will
    be dispatched to the corresponding L{FileDescriptor} instances in
    C{_selectables}.
c                óŒ   € \        4       V n        / V n        / V n        / V n        \
        P                  P                  V 4       R# )zW
Initialize polling object, file descriptor tracking dictionaries, and
the base class.
N)r   Ú_pollerÚ_selectablesÚ_readsÚ_writesr
   ÚPosixReactorBaseÚ__init__)Úselfs   &Ú>/usr/lib/python3/dist-packages/twisted/internet/pollreactor.pyr   ÚPollReactor.__init__C   s7   € ô
 “vˆŒØˆÔØˆŒØˆŒÜ×"Ñ"×+Ñ+¨DÖ1ó    c                ó^  €  V P                   P                  V4       ^ pWP                  9   d   V\        ,          pWP
                  9   d   V\        ,          pV^ 8w  d   V P                   P                  W4       R# WP                  9   d   V P                  V R# R#   \         d     LŽi ; i)z*Register/unregister an fd with the poller.N)	r   Ú
unregisterÚKeyErrorr   r   r   r   Úregisterr   )r   ÚfdÚmasks   && r   Ú_updateRegistrationÚPollReactor._updateRegistrationN   s’   € ð	Ø�L‰L×#Ñ# BÔ'ð ˆØ—‘ÔØœ&•=ˆDØ—‘ÔØœ'•>ˆDØ�1Œ9Ø�L‰L×!Ñ! "Ö+à×&Ñ&Ô&Ø×%Ñ% bÒ)ñ 'øô ô 	Ùð	ús   ‚B ÂB,Â+B,c                óê   €  VP                  4       pW#,           Y29   d   Y# T P	                  T4       R # R #   \         d1    T P                  P                  4        F  w  r4YJ g   K    KR  	   R # i ; i©N)ÚfilenoÚBaseExceptionr   Úitemsr    )r   Ú
selectableÚmdictr   Úfdess   &&&  r   Ú_dictRemoveÚPollReactor._dictRemove`   sw   € ð	à×"Ñ"Ó$ˆBð ŽIð Œ;Ø�	Ø×$Ñ$ RÖ(ñ øô ô 		ð !×-Ñ-×3Ñ3Ö5‘�ØÕ%Ûñ 6ò ð		ús   ‚7 ·,A2Á(A2Á,A2Á1A2c                ó¦   € VP                  4       pW P                  9  d1   WP                  V&   ^V P                  V&   V P                  V4       R# R# )z@Add a FileDescriptor for notification of data available to read.N)r$   r   r   r    )r   Úreaderr   s   && r   Ú	addReaderÚPollReactor.addReaderu   sE   € à�]‰]‹_ˆØ—[‘[Ô Ø$*×Ñ˜bÑ!ØˆD�K‰K˜‰OØ×$Ñ$ RÖ(ñ !r   c                ó¦   € VP                  4       pW P                  9  d1   WP                  V&   ^V P                  V&   V P                  V4       R# R# )zAAdd a FileDescriptor for notification of data available to write.N)r$   r   r   r    )r   Úwriterr   s   && r   Ú	addWriterÚPollReactor.addWriter}   sF   € à�]‰]‹_ˆØ—\‘\Ô!Ø$*×Ñ˜bÑ!Ø ˆD�L‰L˜ÑØ×$Ñ$ RÖ(ñ "r   c                ó8   € V P                  WP                  4      # )z?Remove a Selectable for notification of data available to read.)r*   r   )r   r-   s   &&r   ÚremoveReaderÚPollReactor.removeReader…   s   € à×Ñ ¯©Ó4Ð4r   c                ó8   € V P                  WP                  4      # )z@Remove a Selectable for notification of data available to write.)r*   r   )r   r1   s   &&r   ÚremoveWriterÚPollReactor.removeWriter‰   s   € à×Ñ ¯©Ó5Ð5r   c                óâ   € T P                  V P                   Uu. uF  qP                  V,          NK  	  upV P                   Uu. uF  qP                  V,          NK  	  up4      # u upi u upi )z4
Remove all selectables, and return a list of them.
)Ú
_removeAllr   r   r   ©r   r   s   & r   Ú	removeAllÚPollReactor.removeAll�   s_   € ð �‰Ø-1¯[ª[Ó9©[ r×Ñ˜r×"Ð"©[Ñ9Ø-1¯\ª\Ó:©\ r×Ñ˜r×"Ð"©\Ñ:ó
ð 	
ùÚ9ùÚ:s   šA'ÁA,
c                ó”  € Ve   \        VR,          4      p V P                  P                  V4      pT P                  pT F1  w  rV T P                  T,          p\        P                  ! YtYuT4       K3  	  R#   \         d3   pTP                  ^ ,          \
        P                  8X  d    Rp?R# h Rp?ii ; i  \         d     K…  i ; i)zPoll the poller for new events.Niè  )Úintr   r   ÚSelectErrorÚargsÚerrnoÚEINTRÚ_doReadOrWriter   r   r   ÚcallWithLogger)r   ÚtimeoutÚlÚeÚ_drdwr   Úeventr'   s   &&      r   ÚdoPollÚPollReactor.doPoll–   s²   € àÒÜ˜' D�.Ó)ˆGð	Ø—‘×!Ñ! 'Ó*ˆAð ×#Ñ#ˆÛ‰IˆBðØ!×.Ñ.¨rÕ2�
ô
 ×Ò˜z°*À%ÖHó øô ô 	Ø�v‰v�a�yœEŸK™KÔ'Ýàûð		ûô ô ò ðús/   ˜A8 ÁB8Á8B5Â&B0Â/B0Â0B5Â8CÃCc                ód   € V P                    Uu. uF  qP                  V,          NK  	  up# u upi r#   )r   r   r<   s   & r   Ú
getReadersÚPollReactor.getReaders®   s*   € Ø04·²Ó<±¨"×!Ñ! "×%Ð%±Ñ<Ð<ùÒ<ó   �-c                ód   € V P                    Uu. uF  qP                  V,          NK  	  up# u upi r#   )r   r   r<   s   & r   Ú
getWritersÚPollReactor.getWriters±   s*   € Ø04·²Ó=±¨"×!Ñ! "×%Ð%±Ñ=Ð=ùÒ=rQ   )r   r   r   r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   r   Ú_POLL_DISCONNECTEDr   Ú_POLL_INr   Ú	_POLL_OUTr   r    r*   r.   r2   r5   r8   r=   rL   ÚdoIterationrO   rS   Ú__static_attributes__Ú__classdictcell__)Ú__classdict__s   @r   r   r   $   sj   ø‡ € ñð2 ! 7Õ*¨XÕ5ÐØ€HØ€Iò	2ò*ò$)ò*)ò)ò5ò6ò
òIð, €Kò=÷>ð >r   r   c                 ó6   € \        4       p ^ RIHp V! V 4       R# )zInstall the poll() reactor.)ÚinstallReactorN)r   Útwisted.internet.mainrb   )Úprb   s     r   Úinstallre   µ   s   € ä‹€AÝ4á�1Ör   re   )rY   rC   Úselectr   r   r   r   r   r   rA   r   Úzope.interfacer	   Útwisted.internetr
   Útwisted.internet.interfacesr   Útwisted.pythonr   r   Ú_PollLikeMixinr   re   Ú__all__© r   r   Ú<module>rn      sq   ðñó ÷÷ ñ õ 'å &Ý 5õ ñ ˆ]ÓôM>�)×,Ñ,¨i×.FÑ.Fó M>ó ðM>ò`ð ˜)Ð
$‚r   