o
    Zh                     @  sH   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 deZdS )    )annotationsN)select)Pollerc                      s.   e Zd ZdZdZdd Zd fdd	Z  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              	   C  s   g }g }g }| j D ]Z\}}t|tjr||tj q	t|tr%|}n t|dr>zt|	 }W n t
y=   tdw td||tj@ rO|| |tj@ rY|| |tj@ rc|| q	|||fS )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: )Zsockets
isinstancezmqZSocketappend
getsockoptZFDinthasattrr   	Exception
ValueError	TypeErrorPOLLINPOLLOUTPOLLERR)selfrlistwlistxlistsocketflagsfd r   E/var/www/html/lang_env/lib/python3.10/site-packages/zmq/green/poll.py_get_descriptors   s8   








z_Poller._get_descriptorsc           	   
     sP  |du rd}|dk rd}d}d}d}|dkrt j|d }nd}z|zW|  \}}}	 t d}|s7|dkrD|W W |dkrC|  S S t j| j}z(z	t||| W n t jym } z||urc W Y d}~nd}~ww W |  n|  w q+ t jy } z||ur g W  Y d}~W |dkr|  S S d}~ww |dkr|  w 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   ZtouteventsZ_bug_timeoutt	__class__r   r   r"   5   sV   


z_Poller.poll)r   )__name__
__module____qualname____doc__r$   r   r"   __classcell__r   r   r(   r   r   
   s
    "r   )
__future__r   r   r   r   r   Z_original_Pollerr   r   r   r   r   <module>   s    