
    Zd                     J    d dl Z d dl mZ d dlZd dlmZ  G d de          ZdS )    N)select)Pollerc                   .     e Zd ZdZdZd Zd fd	Z xZS )_PollerzReplacement for :class:`zmq.Poller`

    Ensures that the greened Poller below is used in calls to
    :meth:`zmq.Poller.poll`.
    gHzG?c                    g }g }g }| j         D ]0\  }}t          |t          j                  r3|                    |                    t          j                             St          |t                    r|}nYt          |d          r7	 t          |	                                          }n&#  t          d          xY wt          d|z            |t          j        z  r|                    |           |t          j        z  r|                    |           |t          j        z  r|                    |           2|||fS )zdReturns three elements tuple with socket descriptors ready
        for gevent.select.select
        filenoz(fileno() must return an valid integer fdzHSocket must be a 0MQ socket, an integer fd or have a fileno() method: %r)sockets
isinstancezmqSocketappend
getsockoptFDinthasattrr   
ValueError	TypeErrorPOLLINPOLLOUTPOLLERR)selfrlistwlistxlistsocketflagsfds          .lib/python3.11/site-packages/zmq/green/poll.py_get_descriptorsz_Poller._get_descriptors   sT    !\ 	! 	!MFE&#*-- V..sv66777FC(( ** 	QV]]__--BBQ$%OPPP46<=  
 sz! !R   s{" !R   s{" !R   ue$$s   
!B,,B=c                    |d}|dk     rd}d}d}d}|dk    r#t           j                            |dz            }nd}	 |                                 \  }}}	 t	                                          d          }|s|dk    r||dk    r|                                 S S t           j                            | j                  }	 t          j        |||           n!# t           j        $ r}||ur Y d}~nd}~ww xY w|                                 n# |                                 w xY w# t           j        $ r,}||ur g cY d}~|dk    r|                                 S S d}~ww xY w# |dk    r|                                 w w xY w)zOverridden method to ensure that the green version of
        Poller is used.

        Behaves the same as :meth:`zmq.core.Poller.poll`
        Nr    r   g     @@)	geventTimeout	start_newr   superpollcancel_gevent_bug_timeoutr   )
r   timeoutr   r   r   toutevents_bug_timeoutt	__class__s
            r   r&   z_Poller.poll3   s    ?GQ;;GQ;;>++Gf,<==DDD	"&"7"7"9"9E5%*a "W\\!& {{   &~778PQQ*M%6666~   ,, -,,,, !''))))L''))))*" ~ 	 	 	}}IIIII{{ 	
 {{ ss    AD+ $D+ C D C9*C4/D 4C99D <D+ D''D+ +E&:E! E&E) !E&&E) )F)r    )__name__
__module____qualname____doc__r(   r   r&   __classcell__)r.   s   @r   r   r      s_           %  %  %D0 0 0 0 0 0 0 0 0 0    r   )r"   r   r   r   _original_Pollerr    r4   r   <module>r7      sz           



 * * * * * *[ [ [ [ [ [ [ [ [ [r4   