o
    Df'                     @  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   L/home/ubuntu/webapp/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)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