
    f                    N    d dl mZ d dlZd dlmZ d dlZd dlmZ  G d de      Zy)    )annotationsN)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                p   g }g }g }| j                   D ]  \  }}t        |t        j                        r/|j	                  |j                  t        j                               Pt        |t              r|}n5t        |d      r	 t        |j                               }nt        d|      |t        j                  z  r|j	                  |       |t        j                  z  r|j	                  |       |t        j                  z  s|j	                  |        |||fS # t        $ r t        d      w xY w)zdReturns three elements tuple with socket descriptors ready
        for gevent.select.select
        filenoz(fileno() must return an valid integer fdzFSocket must be a 0MQ socket, an integer fd or have a fileno() method: )sockets
isinstancezmqSocketappend
getsockoptFDinthasattrr	   	Exception
ValueError	TypeErrorPOLLINPOLLOUTPOLLERR)selfrlistwlistxlistsocketflagsfds          I/var/www/cvtools/html/venv/lib/python3.12/site-packages/zmq/green/poll.py_get_descriptorsz_Poller._get_descriptors   s    !\\ 	!MFE&#**-V..svv67FC(*QV]]_-B  228= 
 szz!R s{{"R s{{"R -	!0 ue$$ ! Q$%OPPQs   D  D5c                   |d}|dk  rd}d}d}d}|dkD  r#t         j                  j                  |dz        }nd}	 | j                         \  }}}	 t        	|   d      }|s|dk(  r||dkD  r|j                          S S t         j                  j                  | j                        }	 t        j                  |||       |j                          # t         j                  $ r}||ur Y d}~.d}~ww xY w# |j                          w xY w# t         j                  $ r'}||ur g cY d}~|dkD  r|j                          S S d}~ww xY w# |dkD  r|j                          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   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.poll5   sd    ?GQ;GQ;>>++Gf,<=DD	"&"7"7"9E5%aW\!& {   &~~778P8PQ*MM%6
 !'')  ~~ , - !'')~~ 	}I{ 	
 { sk   ,D )D +C D C5&C0+C8 0C55C8 8D

D E E&E'E
 EE
 
E")r#   )__name__
__module____qualname____doc__r*   r!   r(   __classcell__)r0   s   @r    r   r   
   s       %D0 0    r   )
__future__r   r$   r   r   r   _original_Pollerr    r6   r    <module>r:      s#    "   
 *[ [r6   