o
    ?Zc'                     @   sR  d 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.d/Z)eed0dZ*eed1dZ+eed2d*Z,eed3d,Z-eed4dZ.d Z/Z0d Z1Z2d5 Z3Z4zej5ej6hZ7W n e8y   ej5hZ7Y nw G d6d7 d7Z9G d8d9 d9Z:G d:d; d;Z;G d<d= d=Z<d>d? Z=d@d Z>dS )AzSelector Utilities.    N)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   r0   self r4   I/var/www/chikooza/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)r0   register	Exceptiongetattrr8   EEXIST)r3   fdeventsexcr4   r4   r5   r9   >   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 r7   )
r0   
unregisterOSError
ValueErrorKeyError	TypeErrorr;   r8   ENOENTEPERMr3   r=   r?   r4   r4   r5   r@   F   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   r8   )r0   r   r:   r;   r8   EINTR)r3   timeoutr?   r4   r4   r5   r   O   s   z_epoll.pollc                 C      | j   d S r1   )r0   closer2   r4   r4   r5   rK   V      z_epoll.closeN)__name__
__module____qualname__r6   r9   r@   r   rK   r4   r4   r4   r5   r0   9   s    	r0   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 r1   )r   rP   _activeon_file_changecontrol	_kcontrolr2   r4   r4   r5   r6   ^   s   z_kqueue.__init__c                 C   s   |  ||t || j|< |S r1   )_controlr
   rQ   r3   r=   r>   r4   r4   r5   r9   d   s   
z_kqueue.registerc                 C   s@   | j |d }|rz
| ||t W d S  ty   Y d S w d S r1   )rQ   poprU   r   rA   rV   r4   r4   r5   r@   i   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_fflagsrT   r3   r=   evr4   r4   r5   
watch_fileq   s   
z_kqueue.watch_filec                 C   s$   t |tt| jd}| |gd d S rX   )r	   r   r   r\   rT   r]   r4   r4   r5   unwatch_filex   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)rY   rZ   r   )WRITEappendr	   r   READr   rT   rB   )r3   r=   r>   rZ   keventsrS   er4   r4   r5   rU      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  r8   r   )rT   r:   r;   r8   rH   identrY   r   getrc   r   rZ   r   ERRra   r   r   r[   r    r@   rb   rR   listitems)r3   rI   rd   r?   r>   file_changeskr=   r4   r4   r5   r      s6   










z_kqueue.pollc                 C   rJ   r1   )rP   rK   r2   r4   r4   r5   rK      rL   z_kqueue.closeN)rM   rN   rO   r!   r"   r#   r    r\   r6   r9   r@   r_   r`   rU   r   rK   r4   r4   r4   r5   rP   Z   s    rP   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 r1   )xpoll_pollerr   _quick_pollr9   _quick_registerr@   _quick_unregisterr2   r4   r4   r5   r6      s   

z_poll.__init__c                 C   sL   t |}d}|t@ r|tO }|t@ r|tO }|t@ r|tO }| || |S )Nr   )r   rh   r,   ra   r+   rc   r*   rq   )r3   r=   r>   
poll_flagsr4   r4   r5   r9      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 r7   )r   rA   r;   SELECT_BAD_FDrr   rG   r4   r4   r5   r@      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     @@r8   )rp   
_selecterrrA   r;   r8   rH   r.   r-   
isinstancer   rb   )r3   rI   roundr*   r+   r,   rc   ra   rh   r   
event_listr?   readyr=   eventr>   r4   r4   r5   r      s.    
z
_poll.pollc                 C   s
   d | _ d S r1   )ro   r2   r4   r4   r5   rK      s   
z_poll.closeN)rM   rN   rO   r6   r9   r@   mathceilr*   r+   r,   rc   ra   rh   r   r   rK   r4   r4   r4   r5   rm      s    
rm   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 r1   )set_all_rfd_wfd_efdr2   r4   r4   r5   r6      s   z_select.__init__c                 C   sH   t |}|t@ r| j| |t@ r| j| |t@ r"| j| |S r1   )r   rh   r   addra   r   rc   r   rV   r4   r4   r5   r9      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   r8   )	r   r   r   _selectfru   rA   r;   rt   r@   rG   r4   r4   r5   _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 r7   )r   rA   r;   rt   r   discardr   r   rG   r4   r4   r5   r@     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 )Nr8   r   )r   r   r   r   ru   rA   r;   r8   rH   rt   r   rv   r   r   rg   rc   ra   rh   ri   rj   )r3   rI   readwriteerrorr?   r>   r=   r4   r4   r5   r     s4   


z_select.pollc                 C   s"   | j   | j  | j  d S r1   )r   clearr   r   r2   r4   r4   r5   rK   0  s   

z_select.closeN)	rM   rN   rO   r6   r9   r   r@   r   rK   r4   r4   r4   r5   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   r0   r   sysplatformrP   rn   rm   r4   r4   r4   r5   _get_poller6  s   
r   c                  O   s   t  | i |S )zCreate new poller instance.)r   )argskwargsr4   r4   r5   r   E  s   )?__doc__r8   r{   select
__select__r   numbersr    r   compatr   __all__r   r   ru   r;   rn   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.   rc   	POLL_READra   
POLL_WRITErh   POLL_ERREBADFWSAENOTSOCKrt   AttributeErrorr0   rP   rm   r}   r   r   r4   r4   r4   r5   <module>   sn    !W>G