o
    —¨Êh¯'  ã                   @  s^  d Z ddlm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+ƒZ.eed4d-ƒZ/eed5dƒZ0d Z1Z2d Z3Z4d6 Z5Z6zej7ej8hZ9W n e:�y   ej7hZ9Y nw G d7d8„ d8ƒZ;G d9d:„ d:ƒZ<G d;d<„ d<ƒZ=G d=d>„ d>ƒZ>d?d@„ Z?dAd	„ Z@dS )BzSelector Utilities.é    )ÚannotationsN)Ú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   r1   ©Úself© r5   úE/var/www/html/env/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)r1   ÚregisterÚ	ExceptionÚgetattrr9   ÚEEXIST)r4   ÚfdÚeventsÚexcr5   r5   r6   r:   @   s   ý
ÿ€ýz_epoll.registerc                 C  sn   z	| j  |¡ W d S  ttttfy   Y d S  ty6 } zt|dd ƒtjtj	fvr+‚ W Y d }~d S d }~ww r8   )
r1   Ú
unregisterÚOSErrorÚ
ValueErrorÚKeyErrorÚ	TypeErrorr<   r9   ÚENOENTÚEPERM©r4   r>   r@   r5   r5   r6   rA   H   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   r9   )r1   r   r;   r<   r9   ÚEINTR)r4   Útimeoutr@   r5   r5   r6   r   Q   s   ÿ€ÿz_epoll.pollc                 C  ó   | j  ¡  d S r2   )r1   Úcloser3   r5   r5   r6   rL   X   ó   z_epoll.closeN)Ú__name__Ú
__module__Ú__qualname__r7   r:   rA   r   rL   r5   r5   r5   r6   r1   ;   s    	r1   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 r2   )r	   rQ   Ú_activeÚon_file_changeÚcontrolÚ	_kcontrolr3   r5   r5   r6   r7   `   s   z_kqueue.__init__c                 C  s   |   ||t¡ || j|< |S r2   )Ú_controlr   rR   ©r4   r>   r?   r5   r5   r6   r:   f   s   
z_kqueue.registerc                 C  s@   | j  |d ¡}|rz
|  ||t¡ W d S  ty   Y d S w d S r2   )rR   ÚpoprV   r   rB   rW   r5   r5   r6   rA   k   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_fflagsrU   ©r4   r>   Úevr5   r5   r6   Ú
watch_files   s   
ýz_kqueue.watch_filec                 C  s$   t |tt| jd�}|  |gd¡ d S rY   )r
   r   r   r]   rU   r^   r5   r5   r6   Úunwatch_filez   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)rZ   r[   r   )ÚWRITEÚappendr
   r   ÚREADr   rU   rC   )r4   r>   r?   r[   ÚkeventsrT   Úer5   r5   r6   rV   �   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è  r9   r   )rU   r;   r<   r9   rI   ÚidentrZ   r   Úgetrd   r   r[   r   ÚERRrb   r   r   r\   r!   rA   rc   rS   ÚlistÚitems)r4   rJ   re   r@   r?   Úfile_changesÚkr>   r5   r5   r6   r   ”   s6   €ý









€
z_kqueue.pollc                 C  rK   r2   )rQ   rL   r3   r5   r5   r6   rL   ¯   rM   z_kqueue.closeN)rN   rO   rP   r"   r#   r$   r!   r]   r7   r:   rA   r`   ra   rV   r   rL   r5   r5   r5   r6   rQ   \   s    ÿÿrQ   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 r2   )ÚxpollÚ_pollerr   Ú_quick_pollr:   Ú_quick_registerrA   Ú_quick_unregisterr3   r5   r5   r6   r7   µ   s   

z_poll.__init__c                 C  sL   t |ƒ}d}|t@ r|tO }|t@ r|tO }|t@ r|tO }|  ||¡ |S )Nr   )r   ri   r-   rb   r,   rd   r+   rr   )r4   r>   r?   Ú
poll_flagsr5   r5   r6   r:   »   s   z_poll.registerc              
   C  sV   zt |ƒ}W n ty# } zt|dd ƒtv r|W  Y d }~S ‚ d }~ww |  |¡ |S r8   )r   rB   r<   ÚSELECT_BAD_FDrs   rH   r5   r5   r6   rA   Ç   s   €û
z_poll.unregisterc
              
   C  sð   |r|dk rdn||pdd ƒ}z|   |¡}
W n ttfy6 } zt|dd ƒtjkr1W Y d }~d S ‚ d }~ww g }|
D ]:\}}d}||@ rI||O }||@ rQ||O }||@ s]|t@ s]|t@ ra||O }|seJ ‚t||	ƒsn| 	¡ }| 
||f¡ q;|S )Nr   g     @�@r9   )rq   Ú
_selecterrrB   r<   r9   rI   r/   r.   Ú
isinstancer   rc   )r4   rJ   Úroundr+   r,   r-   rd   rb   ri   r   Ú
event_listr@   Úreadyr>   Úeventr?   r5   r5   r6   r   Ó   s.    €ý
z
_poll.pollc                 C  s
   d | _ d S r2   )rp   r3   r5   r5   r6   rL   í   s   
z_poll.closeN)rN   rO   rP   r7   r:   rA   ÚmathÚceilr+   r,   r-   rd   rb   ri   r   r   rL   r5   r5   r5   r6   rn   ³   s    
þrn   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 r2   )ÚsetÚ_allÚ_rfdÚ_wfdÚ_efdr3   r5   r5   r6   r7   ó   s   þz_select.__init__c                 C  sH   t |ƒ}|t@ r| j |¡ |t@ r| j |¡ |t@ r"| j |¡ |S r2   )r   ri   rƒ   Úaddrb   r‚   rd   r�   rW   r5   r5   r6   r:   ø   s   z_select.registerc                 C  sr   | j | jB | jB D ]-}z
t|gg g dƒ W q	 ttfy6 } zt|dd ƒtv r,|  |¡ W Y d }~q	d }~ww d S )Nr   r9   )	r�   r‚   rƒ   Ú_selectfrv   rB   r<   ru   rA   rH   r5   r5   r6   Ú_remove_bad  s   
€þýz_select._remove_badc              
   C  sn   zt |ƒ}W n ty" } zt|dd ƒtv rW Y d }~d S ‚ d }~ww | j |¡ | j |¡ | j |¡ d S r8   )r   rB   r<   ru   r�   Údiscardr‚   rƒ   rH   r5   r5   r6   rA   
  s   €ûz_select.unregisterc              
   C  s"  zt | j| j| j|ƒ\}}}W n1 ttfy@ } 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ƒsP| ¡ }| |d¡tB ||< qE|D ]}t|tƒsh| ¡ }| |d¡tB ||< q]|D ]}t|tƒs€| ¡ }| |d¡tB ||< qut| ¡ ƒS )Nr9   r   )r…   r�   r‚   rƒ   rv   rB   r<   r9   rI   ru   r†   rw   r   r   rh   rd   rb   ri   rj   rk   )r4   rJ   ÚreadÚwriteÚerrorr@   r?   r>   r5   r5   r6   r     s4   ÿ€û


z_select.pollc                 C  s"   | j  ¡  | j ¡  | j ¡  d S r2   )r�   Úclearr‚   rƒ   r3   r5   r5   r6   rL   2  s   

z_select.closeN)	rN   rO   rP   r7   r:   r†   rA   r   rL   r5   r5   r5   r6   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   r1   r	   ÚsysÚplatformrQ   ro   rn   r5   r5   r5   r6   Ú_get_poller8  s   
r�   c                  O  s   t ƒ | i |¤ŽS )zCreate new poller instance.)r�   )ÚargsÚkwargsr5   r5   r6   r   G  s   )AÚ__doc__Ú
__future__r   r9   r|   ÚselectÚ
__select__rŽ   Únumbersr   Ú r   Úcompatr   Ú__all__r…   rŠ   rv   r<   ro   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.   r/   rd   Ú	POLL_READrb   Ú
POLL_WRITEri   ÚPOLL_ERRÚEBADFÚWSAENOTSOCKru   ÚAttributeErrorr1   rQ   rn   r~   r�   r   r5   r5   r5   r6   Ú<module>   sp    ÿ!W>G