U
    @f
                     @   sP   d dl Z d dlmZ e jdZejZdgZdddddgZd	d
 Z	dddZ
dS )    N)get_hubselectZdevpollpollepollZkqueueZkeventc                 C   sf   z
| j }W n2 tk
r<   t| ts4tdt|  |  Y S X | }t|ts^tdt| |S d S )NzExpected int or long, got %s)filenoAttributeError
isinstanceint	TypeErrortype)objfrv r   O/var/www/html/chatgpt/venv/lib/python3.8/site-packages/eventlet/green/select.py
get_fileno   s    



r   c                    s  |d k	r2zt |}W n tk
r0   tdY nX t g t  j krVtdi | D ]}d|it|< q^|D ]}|	t|i d< qx|D ]}|	t|i d< qg } fdd} fdd	}	 fd
dfdd}
|d k	r
||
 z D ]b\}}|drF|
j|| jdd  |dr|
j||	 jdd  qz W W S |D ]}| qX W 5 D ]}|  qX d S )NzExpected number for timeoutz0do not call blocking functions from the mainloopreadwriteerrorc                    s&   t |  d } |gg g f d S )Nr   r   switchdoriginalcurrentdsr   r   on_read3   s    zselect.<locals>.on_readc                    s&   t |  d } g |gg f d S )Nr   r   r   r   r   r   on_write7   s    zselect.<locals>.on_writec                      s     g g g f d S N)r   r   )r   r   r   on_timeout2;   s    zselect.<locals>.on_timeout2c                      s     d d S )Nr   )appendschedule_call_globalr   )hubr    timersr   r   
on_timeout>   s    zselect.<locals>.on_timeoutc                   S   s   d S r   r   r   r   r   r   <lambda>L       zselect.<locals>.<lambda>c                   S   s   d S r   r   r   r   r   r   r&   N   r'   )float
ValueErrorr
   r   eventletZ
getcurrentZgreenletRuntimeErrorr   
setdefaultr!   r"   cancelitemsgetaddREADthrowWRITEremover   )Z	read_listZ
write_listZ
error_listtimeoutrweZ	listenersr   r   r%   tkvlr   )r   r   r#   r    r$   r   r      sH    
	
 $)N)r*   Zeventlet.hubsr   Zpatcherr   Z__selectr   Z__patched__Z__deleted__r   r   r   r   r   r   <module>   s   