o
    e?                     @   s
  d dl mZmZ d dlZd dlmZ g ZejZejZ	e
e	dr3ejds)J de	jZe	jZe	jZndd  Z ZZd	Ze	jd
fe	jdfe	jdfe	jdfe	jdfe	jdfe	jdfe	jdfe	jdfe	jdfe	jdfe	jdfe	jdfe	jdfe	jdfe	j dfgZ!d dl"m#Z$ dd Z%G dd de$j#Z#G dd  d e$j&e#Z'G d!d" d"e$j(e#Z)G d#d$ d$e$j*e#Z+G d%d& d&e$j,e#Z-G d'd( d(e$j.e#Z/G d)d* d*e$j0e#Z1G d+d, d,e$j2e#Z3G d-d. d.e$j4e#Z5e5e6 d/< G d0d1 d1e7Z8G d2d3 d3e$j9e#Z:G d4d5 d5e$j;e#Z<dS )6    )absolute_importprint_functionN)	_corecffivfd_openwinz$vfd functions only needed on windowsc                 C   s   | S N )fdr   r   DD:\Projects\ConvertPro\env\Lib\site-packages\gevent/libev/watcher.py<lambda>   s    r   r   READWRITEZ_IOFDSETZPERIODICZSIGNALZCHILDZSTATZIDLEZPREPAREZCHECKZEMBEDZFORKZCLEANUPASYNCZCUSTOMERROR)watcherc                 C   s   t | tS r   )_baseZevents_to_str_events)eventsr   r   r
   _events_to_str9      r   c                       s   e Zd ZeZeZdZdZdde	j
f fdd	Zdd Zd	d
 Zdd Zdd Zdd Zdd Zdd ZeeeZdd Ze	jdd ZeeeZdd Zedd Z  ZS )r   Zevr   TNc                    s.   |rd| _ nd| _ tt| j||||d d S )Nr      )refpriorityargs)_flagssuperr   __init__)self_loopr   r   r   	__class__r   r
   r   I   s   zwatcher.__init__c                 C      t | j| d S r   libevZev_set_priority_watcherr   r   r   r   r
   _watcher_ffi_set_priorityQ   s   z!watcher._watcher_ffi_set_priorityc                 C   s   | j | j| jg|R   d S r   )_watcher_initr$   _watcher_callback)r   r   r   r   r
   _watcher_ffi_initT   s
   zwatcher._watcher_ffi_initc                 C   s   |  | jj| j d S r   )_watcher_startloop_ptrr$   r   r   r   r
   _watcher_ffi_startY      zwatcher._watcher_ffi_startc                 C   s*   | j d@ r| j  |  j dM  _ d S d S )N   )r   r+   r   r-   r   r   r
   _watcher_ffi_ref\   s   

zwatcher._watcher_ffi_refc                 C   s.   | j d@ dkr| j  |  j dO  _ d S d S )N   r   r0   )r   r+   unrefr-   r   r   r
   _watcher_ffi_unrefa   s   
zwatcher._watcher_ffi_unrefc                 C   s   | j d@  S )Nr   )r   r-   r   r   r
   _get_refg   r   zwatcher._get_refc                 C   s   |r| j d@ s	d S | j d@ r| j  |  j dM  _ d S | j d@ r#d S |  j dO  _ | j d@ sCt| jrE| j  |  j dO  _ d S d S d S )Nr   r0   i)r   r+   r   r#   Zev_is_activer$   r4   r   valuer   r   r
   _set_refj   s   




zwatcher._set_refc                 C   s   t | jS r   )r#   Zev_priorityr$   r-   r   r   r
   _get_priority~   r   zwatcher._get_priorityc                 C   r!   r   r"   r%   r   r   r
   _set_priority   s   zwatcher._set_priorityc                 G   sj   || _ |pt| _| jd@ dkr| j  |  jdO  _t| jj| j	| | jd@ s3|  jdO  _d S d S )Nr3   r   r0      )
callback_NOARGSr   r   r+   r4   r#   Zev_feed_eventr,   r$   )r   Zreventsr=   r   r   r   r
   feed   s   


zwatcher.feedc                 C   s   t | jo	t| jS r   )boolr$   r#   Zev_is_pendingr-   r   r   r
   pending   s   zwatcher.pending)__name__
__module____qualname__ffiZ_FFIr#   Z_LIBZ_watcher_prefixr   r   r>   r   r&   r)   r.   r2   r5   r6   r9   propertyr   r:   not_while_activer;   r   r?   rA   __classcell__r   r   r   r
   r   >   s*    


r   c                   @   sr   e Zd ZejejB ejB Zdd Ze	j
dd ZeeeZdd Ze	j
dd ZeeeZed	d
 Zdd ZdS )ioc                 C      t | jjS r   )vfd_getr$   r	   r-   r   r   r
   _get_fd   r   z
io._get_fdc                 C   s0   t |}t| jj | | j| j|| jj d S r   )r   vfd_freer$   r	   r'   r(   r   )r   r	   Zvfdr   r   r
   _set_fd   s   z
io._set_fdc                 C      | j jS r   )r$   r   r-   r   r   r
   _get_events   s   zio._get_eventsc                 C   s   |  | j| j| jj| d S r   )r'   r$   r(   r	   )r   r   r   r   r
   _set_events   s   zio._set_eventsc                 C   rJ   r   )r   r$   r   r-   r   r   r
   
events_str      zio.events_strc                 C   s   d| j | jf S )Nz fd=%s events=%s)r	   rR   r-   r   r   r
   _format   s   z
io._formatN)rB   rC   rD   r#   EV__IOFDSETEV_READEV_WRITEZ
EVENT_MASKrL   r   rG   rN   rF   r	   rP   rQ   r   rR   rT   r   r   r   r
   rI      s    




rI   c                   @   s    e Zd Zedd Zdd ZdS )timerc                 C   rO   r   )r$   atr-   r   r   r
   rY         ztimer.atc                 O   s2   t j| _z| j|g|R i | W | `d S | `w r   )r#   Zev_timer_againr*   start)r   r=   r   kwr   r   r
   again   s   ztimer.againN)rB   rC   rD   rF   rY   r]   r   r   r   r
   rX      s    
rX   c                   @      e Zd ZdS )signalNrB   rC   rD   r   r   r   r
   r_          r_   c                   @   r^   )idleNr`   r   r   r   r
   rb      ra   rb   c                   @   r^   )prepareNr`   r   r   r   r
   rc      ra   rc   c                   @   r^   )checkNr`   r   r   r   r
   rd      ra   rd   c                   @   r^   )forkNr`   r   r   r   r
   re      ra   re   c                   @   s    e Zd Zdd Zedd ZdS )async_c                 C   s   t | jj| j d S r   )r#   Zev_async_sendr+   r,   r$   r-   r   r   r
   send   r/   zasync_.sendc                 C   s   | j d uott| j S r   )r$   r@   r#   Zev_async_pendingr-   r   r   r
   rA      s   zasync_.pendingN)rB   rC   rD   rg   rF   rA   r   r   r   r
   rf      s    rf   asyncc                   @   s$   e Zd ZdZdd Zdd ZeZdS )_ClosedWatcherpidrpidrstatusc                 C   s   |j | _ |j| _|j| _d S r   rj   )r   otherr   r   r
   r      s   z_ClosedWatcher.__init__c                 C   s   dS )NFr   r-   r   r   r
   __bool__   s   z_ClosedWatcher.__bool__N)rB   rC   rD   	__slots__r   ro   __nonzero__r   r   r   r
   ri      s
    ri   c                       s`   e Zd Zd Z fddZedd Zedd Zejdd Zedd	 Z	e	jd
d	 Z	  Z
S )childc                    s"   t | j}tt|   || _d S r   )ri   r$   r   rr   close)r   Zclosed_watcherr   r   r
   rs      s   

zchild.closec                 C   rO   r   )r$   rk   r-   r   r   r
   rk      rZ   z	child.pidc                 C   rO   r   r$   rl   r-   r   r   r
   rl      rZ   z
child.rpidc                 C      || j _d S r   rt   r7   r   r   r
   rl     rS   c                 C   rO   r   r$   rm   r-   r   r   r
   rm     rZ   zchild.rstatusc                 C   ru   r   rv   r7   r   r   r
   rm   	  rS   )rB   rC   rD   _watcher_typers   rF   rk   rl   setterrm   rH   r   r   r   r
   rr      s    



rr   c                   @   s4   e Zd Zd Zedd Zedd Zedd ZdS )statc                 C      | j jjsd S | j jS r   )r$   attrst_nlinkr-   r   r   r
   r{        
z	stat.attrc                 C   rz   r   )r$   prevr|   r-   r   r   r
   r~     r}   z	stat.prevc                 C   rO   r   )r$   intervalr-   r   r   r
   r     rZ   zstat.intervalN)rB   rC   rD   rw   rF   r{   r~   r   r   r   r   r
   ry     s    

ry   )=
__future__r   r   sysZgevent.libevr   __all__rE   libr#   hasattrplatform
startswithr   rM   rK   r>   rV   rW   rU   ZEV_PERIODICZ	EV_SIGNALZEV_CHILDZEV_STATZEV_IDLEZ
EV_PREPAREZEV_CHECKZEV_EMBEDZEV_FORKZ
EV_CLEANUPZEV_ASYNCZ	EV_CUSTOMZEV_ERRORr   Zgevent._ffir   r   r   ZIoMixinrI   Z
TimerMixinrX   ZSignalMixinr_   Z	IdleMixinrb   ZPrepareMixinrc   Z
CheckMixinrd   Z	ForkMixinre   Z
AsyncMixinrf   localsobjectri   Z
ChildMixinrr   Z	StatMixinry   r   r   r   r
   <module>   sZ   
Y 

