o
    c5                     @   s  d dl mZmZ d dlZg dZd dlmZ d dlmZ d dl	m
Z
 e
jZe
jZeedrAejds7J d	ejZejZejZnd
d  Z ZZe  d dlmZ d dlmZ G dd deZeeeeZejZejZejZej Z!ej"Z#ej$Z%ej&Z'ej(Z)ej*Z+ej,Z-ej.Z/ej0Z1ej2Z3ej4Z5ej6Z7ej8Z9ej:Z;ej<Z=ejej B Z>ej?Z@ejAZBejCZDejEZFejGZHejIZJejKZLejMZNejOZPejQZRejSZTd dlmUZU eUZVdd ZWdd ZXejCdfejEdfejYdfejZdfejGdfejIdfejKdfej[dfejMdfejQdfejSdfgZ\e]d d! e\D Z^d"d# Z_ej`d  d$kreaebfZcedfZend dlfZfefjcfZcedefjgfZed%d& Zhd'd( Zid)d* Zjd+d, Zkd-d. Zld/d0 Zmd1d2 Znd d3lmoZo d d4l	mpZq eqjrZreeG d5d6 d6eoZset d7d8 Zud9d: ZvdawejxZxdS );    )absolute_importprint_functionN)get_versionget_header_versionsupported_backendsrecommended_backendsembeddable_backendstimeloop)implementer)ILoop)	_corecffivfd_openwinz$vfd functions only needed on windowsc                 C   s   | S N )fdr   r   K/var/www/chikooza/env/lib/python3.10/site-packages/gevent/libev/corecffi.py<lambda>"   s    r   )AbstractCallbacks)assign_standard_callbacksc                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )

_Callbacksc                 G   s   |\}}}t | | d S r   )r   python_check_callback)selfargs_loopwatcher_ptr_eventsr   r   r   r   :   s   
z _Callbacks.python_check_callbackc                 C   sP   |d ur"|j j}d|v r|d S d|v r"t|d dkr"|d d S t| |S )Nr   r         )tb_framef_localslenr   _find_watcher_ptr_in_traceback)r   tblr   r   r   r#   D   s   z)_Callbacks._find_watcher_ptr_in_tracebackc                 C   s   t | | d S r   )r   python_prepare_callback)r   	_loop_ptrr   r   r   r   r   r&   M      z"_Callbacks.python_prepare_callbackc                 C   s   t d|j}| |S )Nzstruct ev_watcher*)fficastdatafrom_handle)r   r   loop_handler   r   r   _find_loop_from_c_watcherP   s   
z$_Callbacks._find_loop_from_c_watcherN)__name__
__module____qualname__r   r#   r&   r.   r   r   r   r   r   7   s
    
	r   )EVENTSc                   C   s   dt  t  f S Nzlibev-%d.%02d)libevev_version_majorev_version_minorr   r   r   r   r   ~      r   c                   C   s   dt jt jf S r3   )r4   EV_VERSION_MAJOREV_VERSION_MINORr   r   r   r   r      r(   r   portkqueuelinux_iouring	linux_aioepollpollselectnoenv	forkchecksignalfd	nosigmaskc                 c   s    | ]	\}}||fV  qd S r   r   ).0flagstringr   r   r   	<genexpr>   s    rH   c                 C   sH   g }t D ]\}}| |@ r|| | | M } | s nq| r"||  |S r   )_flagsappend)flagsresultcodevaluer   r   r   _flags_to_list   s   


rO   r   c                 C   s   | sdS t | tr| S d}z t | tr| d} | D ]}|  }|r*|t| O }qW |S  tyH } ztd|d	t
t f d }~ww )Nr   ,z/Invalid backend or flag: %s
Possible values: %sz, )
isinstanceinteger_types
basestringsplitstriplower_flags_str2intKeyError
ValueErrorjoinsortedkeys)rK   rL   rN   exr   r   r   _flags_to_int   s&   


r^   c                 C   s   t | tr	t| S t| S r   )rQ   rR   hexstr)rF   r   r   r   _str_hex   s   
ra   c                 C   s`   g }| t jM } | sd S | t j@ std|  | t  @ s.dd t| D }tdd| d S )NzInvalid value for backend: 0x%xc                 S   s   g | ]}t |qS r   )ra   )rE   xr   r   r   
<listcomp>   s    z _check_flags.<locals>.<listcomp>zUnsupported backend: %s|)r4   EVBACKEND_MASKEVBACKEND_ALLrY   ev_supported_backendsrO   rZ   )rK   as_listr   r   r   _check_flags   s   

ri   c                   C      t t S r   )rO   r4   rg   r   r   r   r   r         r   c                   C   rj   r   )rO   r4   ev_recommended_backendsr   r   r   r   r      rk   r   c                   C   rj   r   )rO   r4   ev_embeddable_backendsr   r   r   r   r      rk   r   c                   C   s   t  S r   )r4   ev_timer   r   r   r   r	      s   r	   )AbstractLoop)watcherc                       st  e Zd ZdZdZdZdZdZdLddZdd	 Z	d
d Z
dd Zdd Zdd Zdd Z fddZdd Z fddZdd Zdd Zedd Zed d! Z fd"d#ZdMd%d&Zd'd( Zd)d* Zd+d, Zejfd-d.Zd/d0 Zd1d2 Z d3d4 Z!d5d6 Z"ed7d8 Z#ed9d: Z$ed;d< Z%ed=d> Z&ed?d@ Z'dAdB Z(e)j*dCkrdDdE Z+dFdG Z,dHdI Z-edJdK Z.  Z/S )Nr
   gh㈵>Nzstruct ev_check *zstruct ev_prepare *zstruct ev_timer *c                 C   s*   t | ttt|| tt| j| _d S r   )	ro   __init__r)   r4   	_watchersboolev_is_default_loop_ptr_default)r   rK   defaultr   r   r   rq     s   zloop.__init__c                 C   s   t |}t| |tjO }|tjO }|d u rd}|r)t|}|s(td|f nt|}|s7td|f |s=td u rBt	| j
 t|| |S )NTzev_default_loop(%s) failedzev_loop_new(%s) failed)r^   ri   r4   EVFLAG_NOENVEVFLAG_FORKCHECKgevent_ev_default_loopSystemErrorev_loop_newSYSERR_CALLBACKset_syserr_cb_handle_syserrev_set_userdata)r   rK   rw   c_flagsptrr   r   r   
_init_loop  s$   




zloop._init_loopc                 C   s6   t | jt j | j| j_t | j| j |   d S r   )	r4   ev_check_init_checkr   _handle_to_selfr+   ev_check_startru   unrefr   r   r   r   _init_and_start_check  s   
zloop._init_and_start_checkc                 C   s,   t | jt j t | j| j |   d S r   )r4   ev_prepare_init_preparer&   ev_prepare_startru   r   r   r   r   r   _init_and_start_prepare!  s   zloop._init_and_start_preparec                 C   s   t | jt jdd d S )Ng        )r4   ev_timer_init_timer0gevent_noopr   r   r   r   _init_callback_timer&  s   zloop._init_callback_timerc                 C      t | j| j d S r   )r4   ev_timer_stopru   r   r   r   r   r   _stop_callback_timer)  r7   zloop._stop_callback_timerc                 C   r   r   )r4   ev_timer_startru   r   r   r   r   r   _start_callback_timer,  r7   zloop._start_callback_timerc                    sv   t t|   t| jr|   t| j| j t| j	r+|   t
| j| j	 t| jr9t| j d S d S r   )superr
   _stop_aux_watchersr4   ev_is_activer   refev_prepare_stopru   r   ev_check_stopr   r   r   	__class__r   r   r   /  s   zloop._stop_aux_watchersc                 C   s   |    d S r   )r   r   r   r   r   _setup_for_run_callback:  s   zloop._setup_for_run_callbackc                    s8   | j rtt|   t d | jkrtd  d S d S d S )Nr}   )ru   r   r
   destroyglobalsr   r~   r   r   r   r   r   A  s   zloop.destroyc                 C   s
   t |S r   )r4   ev_userdatar   r   r   r   r   _can_destroy_loopI  s   
zloop._can_destroy_loopc                 C   sL   t |tj t | t | j t | j t 	| j
 | `| `| `
d S r   )r4   r   r)   NULLev_loop_destroygevent_zero_preparer   gevent_zero_checkr   gevent_zero_timerr   r   r   r   r   _destroy_loopM  s   
zloop._destroy_loopc                 C      t jS r   )r4   	EV_MAXPRIr   r   r   r   MAXPRI[     zloop.MAXPRIc                 C   r   r   )r4   	EV_MINPRIr   r   r   r   MINPRI_  r   zloop.MINPRIc                    s*   t t| |||| t| jtj d S r   )r   r
   _default_handle_errorr4   ev_breakru   EVBREAK_ONE)r   contexttyperN   r$   r   r   r   r   c  s   zloop._default_handle_errorFc                 C   s2   d}|r	|t jO }|r|t jO }t | j| d S Nr   )r4   EVRUN_NOWAIT
EVRUN_ONCEev_runru   )r   nowaitoncerK   r   r   r   rung  s   

zloop.runc                 C      t | j d S r   )r4   ev_loop_forkru   r   r   r   r   reinitp  r(   zloop.reinitc                 C   r   r   )r4   ev_refru   r   r   r   r   r   s  r(   zloop.refc                 C   r   r   )r4   ev_unrefru   r   r   r   r   r   v  r(   z
loop.unrefc                 C   s   t | j| d S r   )r4   r   ru   )r   howr   r   r   break_y  s   zloop.break_c                 C   r   r   )r4   	ev_verifyru   r   r   r   r   verify|  r(   zloop.verifyc                 C      t | jS r   )r4   ev_nowru   r   r   r   r   now  rk   zloop.nowc                 C   r   r   )r4   ev_now_updateru   r   r   r   r   
update_now  r(   zloop.update_nowc                 C   s   d| j jt| |  f S )Nz<%s at 0x%x %s>)r   r/   id_formatr   r   r   r   __repr__  s   zloop.__repr__c                 C   r   r   )r4   ev_iterationru   r   r   r   r   	iteration     zloop.iterationc                 C   r   r   )r4   ev_depthru   r   r   r   r   depth  r   z
loop.depthc                 C   r   r   )r4   
ev_backendru   r   r   r   r   backend_int  r   zloop.backend_intc                 C   s.   t | j}tD ]\}}||kr|  S q|S r   )r4   r   ru   rI   )r   backendkeyrN   r   r   r   r     s   zloop.backendc                 C   r   r   )r4   ev_pending_countru   r   r   r   r   
pendingcnt  r   zloop.pendingcntc                 C   s0   t | j}t | j|d t | j}||kS )Ni  )r4   r   ru   ev_feed_fd_event)r   r   pending_beforepending_afterr   r   r   
closing_fd  s   zloop.closing_fdwin32c                 C      t   d S r   )r4   gevent_install_sigchld_handlerr   r   r   r   install_sigchld  rk   zloop.install_sigchldc                 C   r   r   )r4   gevent_reset_sigchld_handlerr   r   r   r   reset_sigchld  rk   zloop.reset_sigchldc                 C   s*   | j rtr| j j}|dkr|S d S d S d S r   )ru   LIBEV_EMBED
backend_fd)r   r   r   r   r   fileno  s   
zloop.filenoc                 C   s   | j stdtr| j jS dS )Nzoperation on destroyed loop)ru   rY   r   	activecntr   r   r   r   r     s
   zloop.activecnt)NN)FF)0r/   r0   r1   approx_timer_resolutionerror_handler_CHECK_POINTER_PREPARE_POINTER_TIMER_POINTERrq   r   r   r   r   r   r   r   r   r   r   r   propertyr   r   r   r   r   r   r   r4   r   r   r   r   r   r   r   r   r   r   r   r   sysplatformr   r   r   r   __classcell__r   r   r   r   r
      sb    



	





r
   c                 C   s.   zt | } t| t j W d S    td   r   )r)   rG   r}   errnor~   )msgr   r   r   
_syserr_cb  s   
r   c                 C   sF   | d u rt tj d ad S t| rt t j | ad S td| f )Nz!Expected callable or None, got %r)r4   ev_set_syserr_cbr)   r   r}   callabler   	TypeError)callbackr   r   r   r~     s   r~   )y
__future__r   r   r   __all__zope.interfacer   gevent._interfacesr   gevent.libevr   r)   libr4   hasattrr   
startswithr   vfd_freevfd_getgevent_set_ev_allocgevent._ffi.loopr   r   r   
_callbacksEV_UNDEFUNDEFEV_NONENONEEV_READREADEV_WRITEWRITEEV_TIMERTIMEREV_PERIODICPERIODIC	EV_SIGNALSIGNALEV_CHILDCHILDEV_STATSTATEV_IDLEIDLE
EV_PREPAREPREPAREEV_CHECKCHECKEV_EMBEDEMBEDEV_FORKFORK
EV_CLEANUPCLEANUPEV_ASYNCASYNC	EV_CUSTOMCUSTOMEV_ERRORERROR	READWRITEr   r   r   r   EVBACKEND_PORTBACKEND_PORTEVBACKEND_KQUEUEBACKEND_KQUEUEEVBACKEND_EPOLLBACKEND_EPOLLEVBACKEND_POLLBACKEND_POLLEVBACKEND_SELECTBACKEND_SELECTry   	FORKCHECKEVFLAG_NOINOTIFY	NOINOTIFYEVFLAG_SIGNALFDSIGNALFDEVFLAG_NOSIGMASK	NOSIGMASKr2   GEVENT_CORE_EVENTSr   r   EVBACKEND_IOURINGEVBACKEND_LINUXAIOrx   rI   dictrW   rO   version_infobytesr`   rS   intrR   __builtin__longr^   ra   ri   r   r   r   r	   ro   rp   rr   _events_to_strr
   
def_externr   r~   r}   r   r   r   r   r   <module>   s   


 T
	
