o
    i                     @   s<   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 )    N)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 ]U\}}t|tjr||tj q	t|tr%|}nt|dr:zt|	 }W n   t
dtd| |tj@ rJ|| |tj@ rT|| |tj@ r^|| q	|||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fd r   I/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/zmq/green/poll.py_get_descriptors   s6   








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   toutevents_bug_timeoutt	__class__r   r   r#   3   sV   


z_Poller.poll)r   )__name__
__module____qualname____doc__r%   r   r#   __classcell__r   r   r+   r   r      s
    "r   )r   r   r   r   _original_Pollerr   r   r   r   r   <module>   s
    