o
    wvXj(  ã                   @   sr  d Z ddlmZmZ ddlZddlZddlZddlZddl	Z	ddl
mZ ddlmZ ddlmZ dZejZejZeed	dƒZeed
dƒZeeddƒZeeddƒZeeddƒZeeddƒZeeddƒZeeddƒZeeddƒZeeddƒZeeddƒZeeddƒZ eeddƒZ!eeddƒZ"eed d!ƒZ#eed"d#ƒZ$eed$d%ƒZ%eed&dƒZ&eed'dƒZ'eed(dƒZ(eed)dƒZ)eed*d+ƒZ*eed,d-ƒZ+eed.dƒZ,eed/d0ƒZ-eed1dƒZ.eed2dƒZ/eed3d+ƒZ0eed4d-ƒZ1eed5dƒZ2d Z3Z4d Z5Z6d6 Z7Z8zej9ej:hZ;W n e<�y   ej9hZ;Y nw G d7d8„ d8e=ƒZ>G d9d:„ d:e=ƒZ?G d;d<„ d<e=ƒZ@G d=d>„ d>e=ƒZAd?d@„ ZBdAd	„ ZCdS )BzSelector Utilities.é    )Úabsolute_importÚunicode_literalsN)ÚIntegralé   )Úfileno)Údetect_environment)Úpollr   ÚepollÚkqueueÚkeventÚ	KQ_EV_ADDÚKQ_EV_DELETEé   ÚKQ_EV_ENABLEé   ÚKQ_EV_CLEARé    ÚKQ_EV_ERRORi @  Ú	KQ_EV_EOFi €  ÚKQ_FILTER_READéÿÿÿÿÚKQ_FILTER_WRITEéþÿÿÿÚKQ_FILTER_AIOéýÿÿÿÚKQ_FILTER_VNODEéüÿÿÿÚKQ_FILTER_PROCéûÿÿÿÚKQ_FILTER_SIGNALiúÿÿÿÚKQ_FILTER_TIMERiùÿÿÿÚKQ_NOTE_LOWATÚKQ_NOTE_DELETEÚKQ_NOTE_WRITEÚKQ_NOTE_EXTENDÚKQ_NOTE_ATTRIBé   ÚKQ_NOTE_LINKé   ÚKQ_NOTE_RENAMEÚKQ_NOTE_REVOKEé@   ÚPOLLINÚPOLLOUTÚPOLLERRÚPOLLHUPÚPOLLNVALé   c                   @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )Ú_epollc                 C   s   t ƒ | _d S ©N)r	   r2   ©Úself© r6   úP/var/www/html/myproject/venv/lib/python3.10/site-packages/kombu/utils/eventio.pyÚ__init__>   s   z_epoll.__init__c              
   C   sP   z
| j  ||¡ W |S  ty' } zt|dd ƒtjkr‚ W Y d }~|S d }~ww ©NÚerrno)r2   ÚregisterÚ	ExceptionÚgetattrr:   ÚEEXIST)r5   ÚfdÚeventsÚexcr6   r6   r7   r;   A   s   ý
ÿ€ýz_epoll.registerc                 C   st   z	| j  |¡ W d S  tjtttfy   Y d S  ttfy9 } zt	|dd ƒt
jt
jfvr.‚ W Y d }~d S d }~ww r9   )r2   Ú
unregisterÚsocketÚerrorÚ
ValueErrorÚKeyErrorÚ	TypeErrorÚIOErrorÚOSErrorr=   r:   ÚENOENTÚEPERM©r5   r?   rA   r6   r6   r7   rB   I   s   ÿ€ÿz_epoll.unregisterc              
   C   sZ   z| j  |d ur|¡W S d¡W S  ty, } zt|dd ƒtjkr!‚ W Y d }~d S d }~ww )Nr   r:   )r2   r   r<   r=   r:   ÚEINTR)r5   ÚtimeoutrA   r6   r6   r7   r   R   s   ÿ€ÿz_epoll.pollc                 C   ó   | j  ¡  d S r3   )r2   Úcloser4   r6   r6   r7   rP   Y   ó   z_epoll.closeN)Ú__name__Ú
__module__Ú__qualname__r8   r;   rB   r   rP   r6   r6   r6   r7   r2   <   s    	r2   c                   @   s\   e Zd ZeeB eB eB Zdd„ Zdd„ Z	dd„ Z
dd„ Zd	d
„ Zdd„ Zdd„ Zdd„ ZdS )Ú_kqueuec                 C   s"   t ƒ | _i | _d | _| jj| _d S r3   )r
   rU   Ú_activeÚon_file_changeÚcontrolÚ	_kcontrolr4   r6   r6   r7   r8   a   s   z_kqueue.__init__c                 C   s   |   ||t¡ || j|< |S r3   )Ú_controlr   rV   ©r5   r?   r@   r6   r6   r7   r;   g   s   
z_kqueue.registerc                 C   sB   | j  |d ¡}|rz
|  ||t¡ W d S  tjy   Y d S w d S r3   )rV   ÚpoprZ   r   rC   rD   r[   r6   r6   r7   rB   l   s   ÿýz_kqueue.unregisterc                 C   s,   t |tttB tB | jd�}|  |gd¡ d S ©N)ÚfilterÚflagsÚfflagsr   )r   r   r   r   r   Úw_fflagsrY   ©r5   r?   Úevr6   r6   r7   Ú
watch_filet   s   
ýz_kqueue.watch_filec                 C   s$   t |tt| jd�}|  |gd¡ d S r]   )r   r   r   ra   rY   rb   r6   r6   r7   Úunwatch_file{   s   ýz_kqueue.unwatch_filec              	   C   s~   |sd S g }|t @ r| t|t|d�¡ |r|t@ r$| t|t|d�¡ | j}|D ]}z||gdƒ W q) ty<   Y q)w d S )N)r^   r_   r   )ÚWRITEÚappendr   r   ÚREADr   rY   rE   )r5   r?   r@   r_   ÚkeventsrX   Úer6   r6   r7   rZ   ‚   s(   þÿÿýz_kqueue._controlc              
   C   s  z	|   d d|¡}W n ty& } zt|dd ƒtjkr!W Y d }~d S ‚ d }~ww i g }}|D ]S}|j}|jtkrC| |d¡t	B ||< q.|jt
kr]|jt@ rRt||< q.| |d¡tB ||< q.|jtkrm| |d¡tB ||< q.|jtkr�|jt@ r||  |¡ | |¡ q.|r‰|  |¡ t| ¡ ƒS )Niè  r:   r   )rY   r<   r=   r:   rM   Úidentr^   r   Úgetrh   r   r_   r   ÚERRrf   r   r   r`   r"   rB   rg   rW   ÚlistÚitems)r5   rN   ri   rA   r@   Úfile_changesÚkr?   r6   r6   r7   r   •   s6   €ý









€
z_kqueue.pollc                 C   rO   r3   )rU   rP   r4   r6   r6   r7   rP   °   rQ   z_kqueue.closeN)rR   rS   rT   r#   r$   r%   r"   ra   r8   r;   rB   rd   re   rZ   r   rP   r6   r6   r6   r7   rU   ]   s    ÿÿrU   c                   @   sH   e Zd Zdd„ Zdd„ Zdd„ Zejee	e
eeeefdd„Zd	d
„ ZdS )Ú_pollc                 C   s*   t ƒ | _| jj| _| jj| _| jj| _d S r3   )ÚxpollÚ_pollerr   Ú_quick_pollr;   Ú_quick_registerrB   Ú_quick_unregisterr4   r6   r6   r7   r8   ¶   s   

z_poll.__init__c                 C   sL   t |ƒ}d}|t@ r|tO }|t@ r|tO }|t@ r|tO }|  ||¡ |S )Nr   )r   rm   r.   rf   r-   rh   r,   rv   )r5   r?   r@   Ú
poll_flagsr6   r6   r7   r;   ¼   s   z_poll.registerc              
   C   sX   zt |ƒ}W n tjy$ } zt|dd ƒtv r|W  Y d }~S ‚ d }~ww |  |¡ |S r9   )r   rC   rD   r=   ÚSELECT_BAD_FDrw   rL   r6   r6   r7   rB   È   s   €û
z_poll.unregisterc
              
   C   sò   |r|dk rdn||pdd ƒ}z|   |¡}
W n  ttjfy7 } zt|dd ƒtjkr2W Y d }~d S ‚ d }~ww g }|
D ]:\}}d}||@ rJ||O }||@ rR||O }||@ s^|t@ s^|t@ rb||O }|sfJ ‚t	||	ƒso| 
¡ }| ||f¡ q<|S )Nr   g     @�@r:   )ru   Ú
_selecterrrC   rD   r=   r:   rM   r0   r/   Ú
isinstancer   rg   )r5   rN   Úroundr,   r-   r.   rh   rf   rm   r   Ú
event_listrA   Úreadyr?   Úeventr@   r6   r6   r7   r   Ô   s.    €ý
z
_poll.pollc                 C   s
   d | _ d S r3   )rt   r4   r6   r6   r7   rP   î   s   
z_poll.closeN)rR   rS   rT   r8   r;   rB   ÚmathÚceilr,   r-   r.   rh   rf   rm   r   r   rP   r6   r6   r6   r7   rr   ´   s    
þrr   c                   @   s<   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ ZdS )Ú_selectc                 C   s&   t ƒ t ƒ t ƒ f | _\| _| _| _d S r3   )ÚsetÚ_allÚ_rfdÚ_wfdÚ_efdr4   r6   r6   r7   r8   ô   s   þz_select.__init__c                 C   sH   t |ƒ}|t@ r| j |¡ |t@ r| j |¡ |t@ r"| j |¡ |S r3   )r   rm   r‡   Úaddrf   r†   rh   r…   r[   r6   r6   r7   r;   ù   s   z_select.registerc                 C   st   | j | jB | jB D ].}z
t|gg g dƒ W q	 ttjfy7 } zt|dd ƒtv r-|  	|¡ W Y d }~q	d }~ww d S )Nr   r:   )
r…   r†   r‡   Ú_selectfrz   rC   rD   r=   ry   rB   rL   r6   r6   r7   Ú_remove_bad  s   
€þýz_select._remove_badc              
   C   sp   zt |ƒ}W n tjy# } zt|dd ƒtv rW Y d }~d S ‚ d }~ww | j |¡ | j |¡ | j |¡ d S r9   )	r   rC   rD   r=   ry   r…   Údiscardr†   r‡   rL   r6   r6   r7   rB     s   €ûz_select.unregisterc              
   C   s$  zt | j| j| j|ƒ\}}}W n2 ttjfyA } z#t|dd ƒtj	kr*W Y d }~d S t|dd ƒt
v r<|  ¡ W  Y d }~S ‚ d }~ww i }|D ]}t|tƒsQ| ¡ }| |d¡tB ||< qF|D ]}t|tƒsi| ¡ }| |d¡tB ||< q^|D ]}t|tƒs�| ¡ }| |d¡tB ||< qvt| ¡ ƒS )Nr:   r   )r‰   r…   r†   r‡   rz   rC   rD   r=   r:   rM   ry   rŠ   r{   r   r   rl   rh   rf   rm   rn   ro   )r5   rN   ÚreadÚwriterD   rA   r@   r?   r6   r6   r7   r     s4   ÿ€û


z_select.pollc                 C   s"   | j  ¡  | j ¡  | j ¡  d S r3   )r…   Úclearr†   r‡   r4   r6   r6   r7   rP   3  s   

z_select.closeN)	rR   rS   rT   r8   r;   rŠ   rB   r   rP   r6   r6   r6   r7   r‚   ò   s    
r‚   c                   C   s4   t ƒ dkrtS trtS trdtjv rtS trt	S tS )NÚdefaultÚnetbsd)
r   r‚   r	   r2   r
   ÚsysÚplatformrU   rs   rr   r6   r6   r6   r7   Ú_get_poller9  s   
r“   c                  O   s   t ƒ | i |¤ŽS )zCreate new poller instance.)r“   )ÚargsÚkwargsr6   r6   r7   r   H  s   )DÚ__doc__Ú
__future__r   r   r:   r€   ÚselectÚ
__select__rC   r‘   Únumbersr   Ú r   Úcompatr   Ú__all__r‰   rD   rz   r=   rs   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r'   r)   r*   r,   r-   r.   r/   r0   rh   Ú	POLL_READrf   Ú
POLL_WRITErm   ÚPOLL_ERRÚEBADFÚWSAENOTSOCKry   ÚAttributeErrorÚobjectr2   rU   rr   r‚   r“   r   r6   r6   r6   r7   Ú<module>   sr    ÿ!W>G