U
    Ã@ÛfÀ  ã                   @   sŒ   d dl Z d dlZd dlmZmZ d dlmZ e d¡Ze d¡Z	ze j
e jhZW n ek
rl   e j
hZY nX dd„ ZG dd	„ d	ejƒZdS )
é    N)ÚpatcherÚsupport)ÚhubÚselectÚtimec                   C   s
   t tdƒS )Nr   )Úhasattrr   © r   r   úO/var/www/html/chatgpt/venv/lib/python3.8/site-packages/eventlet/hubs/selects.pyÚis_available   s    r
   c                   @   s   e Zd Zdd„ Zddd„ZdS )ÚHubc                 C   s€   t | j| j ƒt | j| j ƒ }|D ]V}zt |gg g d¡ W q$ tk
rx } zt |¡tkrh|  	|¡ W 5 d}~X Y q$X q$dS )z_ Iterate through fds, removing the ones that are bad per the
        operating system.
        r   N)
ÚlistÚ	listenersÚREADÚWRITEr   ÚOSErrorr   Ú	get_errnoÚBAD_SOCKZremove_descriptor)ÚselfÚall_fdsÚfdÚer   r   r	   Ú_remove_bad_fds   s     zHub._remove_bad_fdsNc              
   C   sp  | j | j }| j | j }|s2|s2|r.t |¡ d S t|ƒ}t|ƒ}|| }zt ||||¡\}}}	W n^ tk
rÂ }
 z@t 	|
¡t
jkrW Y ¢*d S t 	|
¡tkr°|  ¡  W Y ¢
d S ‚ W 5 d }
~
X Y nX |	D ],}| |tj¡ |¡ | |tj¡ |¡ qÈ||f||ffD ]d\}}|D ]T}z| |tj¡ |¡ W n4 | jk
rH   ‚ Y n   |  |t ¡ ¡ Y nX qqd S )N)r   r   r   r   Úsleepr   r   r   r   r   ÚerrnoZEINTRr   r   Úgetr   ZnoopÚcbZSYSTEM_EXCEPTIONSZsquelch_exceptionÚsysÚexc_info)r   ÚsecondsZreadersZwritersZ
reader_fdsZ
writer_fdsr   ÚrÚwZerr   Úfilenor   Úeventsr   r   r	   Úwait   s:    


zHub.wait)N)Ú__name__Ú
__module__Ú__qualname__r   r#   r   r   r   r	   r      s   r   )r   r   Zeventletr   r   Zeventlet.hubsr   Úoriginalr   r   ÚEBADFZWSAENOTSOCKr   ÚAttributeErrorr
   ZBaseHubr   r   r   r   r	   Ú<module>   s   

