U
    Ã@Ûf7  ã                   @   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	dd„ Z
G dd	„ d	ejƒZdS )
é    N)ÚpatcherÚsupport)ÚhubÚselectÚtimec                   C   s
   t tdƒS )NÚpoll)Úhasattrr   © r	   r	   úL/var/www/html/chatgpt/venv/lib/python3.8/site-packages/eventlet/hubs/poll.pyÚis_available
   s    r   c                       s^   e Zd Zd‡ fdd„	Z‡ fdd„Z‡ fdd„Zdd	d
„Z‡ fdd„Zdd„ Zddd„Z	‡  Z
S )ÚHubNc                    s>   t ƒ  |¡ tjtjB | _tjtjB | _tj	| _
t ¡ | _d S ©N)ÚsuperÚ__init__r   ÚPOLLERRÚPOLLHUPÚEXC_MASKÚPOLLINÚPOLLPRIÚ	READ_MASKÚPOLLOUTÚ
WRITE_MASKr   )ÚselfÚclock©Ú	__class__r	   r
   r      s
    zHub.__init__c                    s&   t ƒ  |||||¡}| j|dd |S )NT)Únew)r   ÚaddÚregister)r   ZevtypeÚfilenoÚcbÚtbÚmacÚlistenerr   r	   r
   r      s    zHub.addc                    s   t ƒ  |¡ |  |j¡ d S r   )r   Úremover   r   )r   r#   r   r	   r
   r$      s    z
Hub.removeFc              	   C   sì   d}| j | j  |¡r&|| j| jB O }| j | j  |¡rH|| j| jB O }z~|rš|rb| j ||¡ qÄz| j 	||¡ W qÄ t
k
r–   | j ||¡ Y qÄX n*z| j |¡ W n tt
fk
rÂ   Y nX W n  tk
ræ   |  |¡ ‚ Y nX d S )Nr   )Ú	listenersÚREADÚgetr   r   ÚWRITEr   r   r   ÚmodifyÚOSErrorÚ
unregisterÚKeyErrorÚ
ValueErrorÚremove_descriptor)r   r   r   Úmaskr	   r	   r
   r      s(    

zHub.registerc              
      s<   t ƒ  |¡ z| j |¡ W n tttfk
r6   Y nX d S r   )r   r.   r   r+   r,   r-   r*   )r   r   r   r	   r
   r.   :   s
    zHub.remove_descriptorc                 C   s   | j   t|d ƒ¡S )Ng     @@)r   Úint)r   Úsecondsr	   r	   r
   Údo_pollC   s    zHub.do_pollc              
   C   s¢  | j | j }| j | j }|s2|s2|r.t |¡ d S z|  |¡}W n> tk
r~ } z t |¡t	j
krlW Y ¢
d S ‚ W 5 d }~X Y nX | j}| jr”|  ¡  tƒ }tj}|D ]–\}	}
|
| j@ rÌ| | |	|¡|	f¡ |
| j@ rì| | |	|¡|	f¡ |
tj@ r|  |	¡ q¤|
| j@ r¤| | |	|¡|	f¡ | | |	|¡|	f¡ q¤|D ]L\}}	z| |	¡ W n2 |k
rn   ‚ Y n   |  |	t ¡ ¡ Y nX q@| jrž|  ¡  d S r   )r%   r&   r(   r   Úsleepr2   r*   r   Z	get_errnoÚerrnoZEINTRÚSYSTEM_EXCEPTIONSZdebug_blockingZblock_detect_preÚsetr   Únoopr   r   r'   r   r   ÚPOLLNVALr.   r   r    Zsquelch_exceptionÚsysÚexc_infoZblock_detect_post)r   r1   ZreadersZwritersZpresultÚer5   Ú	callbacksr7   r   Úeventr#   r	   r	   r
   ÚwaitG   sJ    





zHub.wait)N)F)N)Ú__name__Ú
__module__Ú__qualname__r   r   r$   r   r.   r2   r>   Ú__classcell__r	   r	   r   r
   r      s   
	r   )r4   r9   Zeventletr   r   Zeventlet.hubsr   Úoriginalr   r   r   ZBaseHubr   r	   r	   r	   r
   Ú<module>   s   

