
    i                         d dl Z d dlZd dlmZ g Zej        Zej        Z eed          r:e j	        
                    d          s
J d            ej        Zej        Zej        Znd xZx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 Z# G d de"j!                  Z! G d de"j$        e!          Z% G d de"j&        e!          Z' G d  d!e"j(        e!          Z) G d" d#e"j*        e!          Z+ G d$ d%e"j,        e!          Z- G d& d'e"j.        e!          Z/ G d( d)e"j0        e!          Z1 G d* d+e"j2        e!          Z3e3 e4            d,<    G d- d.e5          Z6 G d/ d0e"j7        e!          Z8 G d1 d2e"j9        e!          Z:dS )3    N)	_corecffivfd_openwinz$vfd functions only needed on windowsc                     | S N )fds    ?/usr/local/lib/python3.11/dist-packages/gevent/libev/watcher.py<lambda>r      s    r     r   READWRITE_IOFDSETPERIODICSIGNALCHILDSTATIDLEPREPARECHECKEMBEDFORKCLEANUPASYNCCUSTOMERROR)watcherc                 6    t          j        | t                    S r   )_baseevents_to_str_events)eventss    r
   _events_to_strr#   9   s    vw///r   c                        e Zd ZeZeZdZdZdde	j
        f fd	Zd Zd Zd Zd	 Zd
 Zd Zd Z eee          Zd Ze	j        d             Z eee          Zd Zed             Z xZS )r   evr   TNc                     |rd| _         nd| _         t          t          |                               ||||           d S )Nr      )refpriorityargs)_flagssuperr   __init__)self_loopr(   r)   r*   	__class__s        r
   r-   zwatcher.__init__I   sH     	DKKDKgt%%exd%SSSSSr   c                 F    t                               | j        |           d S r   libevev_set_priority_watcherr.   r)   s     r
   _watcher_ffi_set_priorityz!watcher._watcher_ffi_set_priorityQ   s     dmX66666r   c                 8     | j         | j        | j        g|R   d S r   )_watcher_initr5   _watcher_callback)r.   r*   s     r
   _watcher_ffi_initzwatcher._watcher_ffi_initT   s:    4=1	" 	" 	" 	" 	" 	" 	"r   c                 P    |                      | j        j        | j                   d S r   )_watcher_startloop_ptrr5   r.   s    r
   _watcher_ffi_startzwatcher._watcher_ffi_startY   s$    DINDM:::::r   c                 p    | j         dz  r+| j                                         | xj         dz  c_         d S d S )N   )r+   r>   r(   r@   s    r
   _watcher_ffi_refzwatcher._watcher_ffi_ref\   s=    ;? 	IMMOOOKK2KKKK	 	r   c                 x    | j         dz  dk    r+| j                                         | xj         dz  c_         d S d S )N   r'   rC   )r+   r>   unrefr@   s    r
   _watcher_ffi_unrefzwatcher._watcher_ffi_unrefa   sA    ;?aIOOKK1KKKK  r   c                     | j         dz   S )Nr'   )r+   r@   s    r
   _get_refzwatcher._get_refg   s    ;?""r   c                 p   |rA| j         dz  sd S | j         dz  r| j                                         | xj         dz  c_         d S | j         dz  rd S | xj         dz  c_         | j         dz  sJt                              | j                  r-| j                                         | xj         dz  c_         d S d S d S )Nr'   rC   i)r+   r>   r(   r3   ev_is_activer5   rH   r.   values     r
   _set_refzwatcher._set_refj   s     	!;? {Q  	KK2KKKK{Q KK1KK;? !u'9'9$-'H'H ! 	!!!q 	! ! ! !r   c                 @    t                               | j                  S r   )r3   ev_priorityr5   r@   s    r
   _get_priorityzwatcher._get_priority~   s      ///r   c                 F    t                               | j        |           d S r   r2   r6   s     r
   _set_priorityzwatcher._set_priority   s     dmX66666r   c                 ,   || _         |pt          | _        | j        dz  dk    r)| j                                         | xj        dz  c_        t                              | j        j        | j	        |           | j        dz  s| xj        dz  c_        d S d S )NrG   r'   rC      )
callback_NOARGSr*   r+   r>   rH   r3   ev_feed_eventr?   r5   )r.   reventsrX   r*   s       r
   feedzwatcher.feed   s     OG	;?aIOOKK1KKDINDM7CCC{Q 	KK1KKKK	 	r   c                 h    t          | j        ot                              | j                            S r   )boolr5   r3   ev_is_pendingr@   s    r
   pendingzwatcher.pending   s'    DMHe&9&9$-&H&HIIIr   )__name__
__module____qualname__ffi_FFIr3   _LIB_watcher_prefixr+   r   rY   r-   r7   r;   rA   rE   rI   rK   rP   propertyr(   rS   not_while_activerU   r)   r\   r`   __classcell__r0   s   @r
   r   r   >   sP       DDO F"&EM T T T T T T7 7 7" " "
; ; ;  
  # # #! ! !" (8X
&
&C0 0 0 7 7 7 x}55H	 	 	 J J XJ J J J Jr   r   c                        e Zd Zej        ej        z  ej        z  Ze fd            Z	d Z
ej        d             Z ee
e          Zd Zej        d             Z eee          Zed             Zd Z xZS )ioc                     t                                          |           t                              |          dk    rt	          t
          j        d|          d S )NzInvalid file descriptor )r,   _validate_fdr3   gevent_check_fd_validOSErrorerrnoEBADF)clsr	   r0   s     r
   rp   zio._validate_fd   sU    R   &&r**b00%++rr'KLLL 10r   c                 4    t          | j        j                  S r   )vfd_getr5   r	   r@   s    r
   _get_fdz
io._get_fd   s    t}'(((r   c                     |                      |           t          |          }t          | j        j                   |                     | j        | j        || j        j                   d S r   )rp   r   vfd_freer5   r	   r9   r:   r"   )r.   r	   vfds      r
   _set_fdz
io._set_fd   s^    "rll!"""4=$*@#t}G[\\\\\r   c                     | j         j        S r   )r5   r"   r@   s    r
   _get_eventszio._get_events   s    }##r   c                 ^    |                      | j        | j        | j        j        |           d S r   )r9   r5   r:   r	   )r.   r"   s     r
   _set_eventszio._set_events   s-    4=$*@$-BRTZ[[[[[r   c                 4    t          | j        j                  S r   )r#   r5   r"   r@   s    r
   
events_strzio.events_str   s    dm2333r   c                 &    d| j         d| j        S )Nz fd=z events=)r	   r   r@   s    r
   _formatz
io._format   s     %)WWWdoo>>r   )ra   rb   rc   r3   EV__IOFDSETEV_READEV_WRITE
EVENT_MASKclassmethodrp   rx   r   ri   r|   rh   r	   r~   r   r"   r   r   rj   rk   s   @r
   rm   rm      s       "U]2U^CJM M M M [M
) ) ) ] ] ] 
'7	#	#B$ $ $ \ \ \ Xk;//F4 4 X4? ? ? ? ? ? ?r   rm   c                   *    e Zd Zed             Zd ZdS )timerc                     | j         j        S r   )r5   atr@   s    r
   r   ztimer.at   s    }r   c                 ^    t           j        | _        	  | j        |g|R i | | `d S # | `w xY wr   )r3   ev_timer_againr=   start)r.   rX   r*   kws       r
   againztimer.again   sT     $2	$DJx-$---"---########s   ( ,N)ra   rb   rc   rh   r   r   r   r   r
   r   r      s<            X $ $ $ $ $r   r   c                       e Zd ZdS )signalNra   rb   rc   r   r   r
   r   r              Dr   r   c                       e Zd ZdS )idleNr   r   r   r
   r   r      r   r   r   c                       e Zd ZdS )prepareNr   r   r   r
   r   r      r   r   r   c                       e Zd ZdS )checkNr   r   r   r
   r   r      r   r   r   c                       e Zd ZdS )forkNr   r   r   r
   r   r      r   r   r   c                   *    e Zd Zd Zed             ZdS )async_c                 Z    t                               | j        j        | j                   d S r   )r3   ev_async_sendr>   r?   r5   r@   s    r
   sendzasync_.send   s$    DINDM:::::r   c                 l    | j         d uo+t          t                              | j                             S r   )r5   r^   r3   ev_async_pendingr@   s    r
   r`   zasync_.pending   s,    }D(XT%2H2H2W2W-X-XXr   N)ra   rb   rc   r   rh   r`   r   r   r
   r   r      sC        ; ; ; Y Y XY Y Yr   r   asyncc                   "    e Zd ZdZd Zd ZeZdS )_ClosedWatcherpidrpidrstatusc                 N    |j         | _         |j        | _        |j        | _        d S r   r   )r.   others     r
   r-   z_ClosedWatcher.__init__   s!    9J	}r   c                     dS )NFr   r@   s    r
   __bool__z_ClosedWatcher.__bool__   s    ur   N)ra   rb   rc   	__slots__r-   r   __nonzero__r   r   r
   r   r      s6        *I% % %
  KKKr   r   c                        e Zd Zd Z fdZed             Zed             Zej        d             Zed             Z	e	j        d             Z	 xZ
S )childc                     t          | j                  }t          t          |                                            || _        d S r   )r   r5   r,   r   close)r.   closed_watcherr0   s     r
   r   zchild.close   s;     (66eT  """&r   c                     | j         j        S r   )r5   r   r@   s    r
   r   z	child.pid   s    }  r   c                     | j         j        S r   r5   r   r@   s    r
   r   z
child.rpid  s    }!!r   c                     || j         _        d S r   r   rN   s     r
   r   z
child.rpid  s    "r   c                     | j         j        S r   r5   r   r@   s    r
   r   zchild.rstatus  s    }$$r   c                     || j         _        d S r   r   rN   s     r
   r   zchild.rstatus  s     %r   )ra   rb   rc   _watcher_typer   rh   r   r   setterr   rj   rk   s   @r
   r   r      s        M' ' ' ' ' ! ! X! " " X" 
[# # [# % % X% ^& & ^& & & & &r   r   c                   T    e Zd Zd Zed             Zed             Zed             ZdS )statc                 @    | j         j        j        sd S | j         j        S r   )r5   attrst_nlinkr@   s    r
   r   z	stat.attr  "    }!* 	F}!!r   c                 @    | j         j        j        sd S | j         j        S r   )r5   prevr   r@   s    r
   r   z	stat.prev  r   r   c                     | j         j        S r   )r5   intervalr@   s    r
   r   zstat.interval$  s    }%%r   N)ra   rb   rc   r   rh   r   r   r   r   r   r
   r   r     sh        M" " X"
 " " X"
 & & X& & &r   r   );sysrs   gevent.libevr   __all__rd   libr3   hasattrplatform
startswithr   rz   rw   rY   r   r   r   EV_PERIODIC	EV_SIGNALEV_CHILDEV_STATEV_IDLE
EV_PREPAREEV_CHECKEV_EMBEDEV_FORK
EV_CLEANUPEV_ASYNC	EV_CUSTOMEV_ERRORr!   gevent._ffir   r   r#   IoMixinrm   
TimerMixinr   SignalMixinr   	IdleMixinr   PrepareMixinr   
CheckMixinr   	ForkMixinr   
AsyncMixinr   localsobjectr   
ChildMixinr   	StatMixinr   r   r   r
   <module>r      s   


  " " " " " "  m
75* 2 <""5))QQ+QQQQ~H~HmGG$1M1H1x' M6"NG$z*z*OX&NG$M6"M6"i(NG$NG$M6"i(NG$OX&NG$&" ) ( ( ( ( (0 0 0
VJ VJ VJ VJ VJem VJ VJ VJr$? $? $? $? $? $? $? $?N$ $ $ $ $Eg $ $ $ 	 	 	 	 	U 	 	 		 	 	 	 	5?G 	 	 		 	 	 	 	e ' 	 	 		 	 	 	 	Eg 	 	 		 	 	 	 	5?G 	 	 	Y Y Y Y YUw Y Y Y  
 
 
 
 
V 
 
 
& & & & &Eg & & &>& & & & &5?G & & & & &r   