ó
ÐH/\c        
   @@ sû  d  d l  m Z m Z d  d l Z d d d d d d d	 g 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 ƒ rÊ e j j d ƒ s¬ t d ƒ ‚ e j Z e j Z e j Z n d „  Z Z Z d  d l m Z d  d l m Z d e f d „  ƒ  YZ 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 j0 Z1 e j2 Z3 e j4 Z5 e j6 Z7 e j8 Z9 e j: Z; e j< Z= e j e j  BZ> e j? Z@ e jA ZB e jC ZD e jE ZF e jG ZH e jI ZJ e jK ZL e jM ZN e jO ZP e jQ ZR e jS ZT d  d l mU ZU eU ZV d „  ZW d „  ZX e jC d f e jE d f e jG d f e jI d f e jK d f e jY d f e jM d f e jQ d f e jS d  f g	 ZZ e[ d! „  eZ Dƒ ƒ Z\ d" „  Z] e j^ d  d# k re_ e` f Za eb f Zc n' d  d ld Zd ed ja f Za eb ed je f Zc d$ „  Zf d% „  Zg d& „  Zh d' „  Zi d( „  Zj d) „  Zk d* „  Zl d  d+ l mm Zm d  d, l	 mn Zo eo jp Zp e e ƒ d	 em f d- „  ƒ  Yƒ Zq e jr ƒ  d. „  ƒ Zs d/ „  Zt d av ew Zx d S(0   i    (   t   absolute_importt   print_functionNt   get_versiont   get_header_versiont   supported_backendst   recommended_backendst   embeddable_backendst   timet   loop(   t   implementer(   t   ILoop(   t	   _corecffit   vfd_opent   wins$   vfd functions only needed on windowsc         C@ s   |  S(   N(    (   t   fd(    (    s4   lib/python2.7/site-packages/gevent/libev/corecffi.pyt   <lambda>    s    (   t   AbstractCallbacks(   t   assign_standard_callbackst
   _Callbacksc           B@ s#   e  Z d  „  Z d „  Z d „  Z RS(   c         C@ s   d  S(   N(    (   t   selft   _loopt   watcher_ptrt   _events(    (    s4   lib/python2.7/site-packages/gevent/libev/corecffi.pyt   python_check_callback6   s    c         C@ s   t  j |  | ƒ d  S(   N(   R   t   python_prepare_callback(   R   t	   _loop_ptrR   R   (    (    s4   lib/python2.7/site-packages/gevent/libev/corecffi.pyR   9   s    c         C@ s"   t  j d | ƒ j } |  j | ƒ S(   Ns   struct ev_watcher*(   t   ffit   castt   datat   from_handle(   R   R   t   loop_handle(    (    s4   lib/python2.7/site-packages/gevent/libev/corecffi.pyt   _find_loop_from_c_watcher<   s    (   t   __name__t
   __module__R   R   R   (    (    (    s4   lib/python2.7/site-packages/gevent/libev/corecffi.pyR   3   s   		(   t   EVENTSc           C@ s   d t  j ƒ  t  j ƒ  f S(   Ns   libev-%d.%02d(   t   libevt   ev_version_majort   ev_version_minor(    (    (    s4   lib/python2.7/site-packages/gevent/libev/corecffi.pyR   j   s    c           C@ s   d t  j t  j f S(   Ns   libev-%d.%02d(   R#   t   EV_VERSION_MAJORt   EV_VERSION_MINOR(    (    (    s4   lib/python2.7/site-packages/gevent/libev/corecffi.pyR   n   s    t   portt   kqueuet   epollt   pollt   selectt   noenvt	   forkcheckt   signalfdt	   nosigmaskc         c@ s!   |  ] \ } } | | f Vq d  S(   N(    (   t   .0t   flagt   string(    (    s4   lib/python2.7/site-packages/gevent/libev/corecffi.pys	   <genexpr>{   s    c         C@ sf   g  } xC t  D]; \ } } |  | @r3 | j | ƒ n  |  | M}  |  s Pq q W|  rb | j |  ƒ n  | S(   N(   t   _flagst   append(   t   flagst   resultt   codet   value(    (    s4   lib/python2.7/site-packages/gevent/libev/corecffi.pyt   _flags_to_list   s    
i   c         C@ sÇ   |  s
 d St  |  t ƒ r |  Sd } y_ t  |  t ƒ rG |  j d ƒ }  n  x7 |  D]/ } | j ƒ  j ƒ  } | rN | t | O} qN qN WWn> t k
 rÂ } t d | d j	 t
 t j ƒ  ƒ ƒ f ƒ ‚ n X| S(   Ni    t   ,s/   Invalid backend or flag: %s
Possible values: %ss   , (   t
   isinstancet   integer_typest
   basestringt   splitt   stript   lowert   _flags_str2intt   KeyErrort
   ValueErrort   joint   sortedt   keys(   R6   R7   R9   t   ex(    (    s4   lib/python2.7/site-packages/gevent/libev/corecffi.pyt   _flags_to_int”   s    /c         C@ s#   t  |  t ƒ r t |  ƒ St |  ƒ S(   N(   R<   R=   t   hext   str(   R2   (    (    s4   lib/python2.7/site-packages/gevent/libev/corecffi.pyt   _str_hex§   s    
c         C@ s’   g  } |  t  j M}  |  s d  S|  t  j @s= t d |  ƒ ‚ n  |  t  j ƒ  @sŽ g  t |  ƒ D] } t | ƒ ^ qZ } t d d j | ƒ ƒ ‚ n  d  S(   Ns   Invalid value for backend: 0x%xs   Unsupported backend: %st   |(   R#   t   EVBACKEND_MASKt   EVBACKEND_ALLRD   t   ev_supported_backendsR:   RL   RE   (   R6   t   as_listt   x(    (    s4   lib/python2.7/site-packages/gevent/libev/corecffi.pyt   _check_flags­   s    %c           C@ s   t  t j ƒ  ƒ S(   N(   R:   R#   RP   (    (    (    s4   lib/python2.7/site-packages/gevent/libev/corecffi.pyR   ¹   s    c           C@ s   t  t j ƒ  ƒ S(   N(   R:   R#   t   ev_recommended_backends(    (    (    s4   lib/python2.7/site-packages/gevent/libev/corecffi.pyR   ½   s    c           C@ s   t  t j ƒ  ƒ S(   N(   R:   R#   t   ev_embeddable_backends(    (    (    s4   lib/python2.7/site-packages/gevent/libev/corecffi.pyR   Á   s    c           C@ s
   t  j ƒ  S(   N(   R#   t   ev_time(    (    (    s4   lib/python2.7/site-packages/gevent/libev/corecffi.pyR   Å   s    (   t   AbstractLoop(   t   watcherc           B@ s£  e  Z d  Z d& Z d Z d Z d Z d& d& d „ Z d „  Z	 d „  Z
 d „  Z d „  Z d	 „  Z d
 „  Z d „  Z d „  Z d „  Z d „  Z d „  Z e d „  ƒ Z e d „  ƒ Z d „  Z e e d „ Z d „  Z d „  Z d „  Z e j d „ Z d „  Z  d „  Z! d „  Z" d „  Z# e d „  ƒ Z$ e d „  ƒ Z% e d „  ƒ Z& e d „  ƒ Z' e d  „  ƒ Z( e) j* d! k r‰d" „  Z+ d# „  Z, n  d$ „  Z- e d% „  ƒ Z. RS('   gñhãˆµøä>s   struct ev_check *s   struct ev_prepare *s   struct ev_timer *c         C@ s;   t  j |  t t t | | ƒ t t j |  j ƒ ƒ |  _ d  S(   N(	   RW   t   __init__R   R#   t	   _watcherst   boolt   ev_is_default_loopt   _ptrt   _default(   R   R6   t   default(    (    s4   lib/python2.7/site-packages/gevent/libev/corecffi.pyRY   å   s    c         C@ sá   t  | ƒ } t | ƒ | t j O} | t j O} | d  k rE t } n  | ry t j | ƒ } | s¤ t d | f ƒ ‚ q¤ n+ t j	 | ƒ } | s¤ t d | f ƒ ‚ n  | s½ t
 ƒ  d d  k rÍ t |  j ƒ n  t j | | ƒ | S(   Ns   ev_default_loop(%s) faileds   ev_loop_new(%s) failedt   __SYSERR_CALLBACK(   RI   RS   R#   t   EVFLAG_NOENVt   EVFLAG_FORKCHECKt   Nonet   Truet   gevent_ev_default_loopt   SystemErrort   ev_loop_newt   globalst   set_syserr_cbt   _handle_syserrt   ev_set_userdata(   R   R6   R_   t   c_flagst   ptr(    (    s4   lib/python2.7/site-packages/gevent/libev/corecffi.pyt
   _init_loopé   s"    
	c         C@ sI   t  j |  j t  j ƒ |  j |  j _ t  j |  j |  j ƒ |  j ƒ  d  S(   N(	   R#   t   ev_check_initt   _checkR   t   _handle_to_selfR   t   ev_check_startR]   t   unref(   R   (    (    s4   lib/python2.7/site-packages/gevent/libev/corecffi.pyt   _init_and_start_checkÿ   s    c         C@ s:   t  j |  j t  j ƒ t  j |  j |  j ƒ |  j ƒ  d  S(   N(   R#   t   ev_prepare_initt   _prepareR   t   ev_prepare_startR]   Rs   (   R   (    (    s4   lib/python2.7/site-packages/gevent/libev/corecffi.pyt   _init_and_start_prepare  s    c         C@ s    t  j |  j t  j d d ƒ d  S(   Ng        (   R#   t   ev_timer_initt   _timer0t   gevent_noop(   R   (    (    s4   lib/python2.7/site-packages/gevent/libev/corecffi.pyt   _init_callback_timer
  s    c         C@ s   t  j |  j |  j ƒ d  S(   N(   R#   t   ev_timer_stopR]   Rz   (   R   (    (    s4   lib/python2.7/site-packages/gevent/libev/corecffi.pyt   _stop_callback_timer  s    c         C@ s   t  j |  j |  j ƒ d  S(   N(   R#   t   ev_timer_startR]   Rz   (   R   (    (    s4   lib/python2.7/site-packages/gevent/libev/corecffi.pyt   _start_callback_timer  s    c         C@ s“   t  j |  j ƒ r5 |  j ƒ  t  j |  j |  j ƒ n  t  j |  j ƒ rj |  j ƒ  t  j |  j |  j ƒ n  t  j |  j ƒ r t  j	 |  j ƒ n  d  S(   N(
   R#   t   ev_is_activeRv   t   reft   ev_prepare_stopR]   Rp   t   ev_check_stopRz   R}   (   R   (    (    s4   lib/python2.7/site-packages/gevent/libev/corecffi.pyt   _stop_aux_watchers  s    

c         C@ s   |  j  ƒ  d  S(   N(   R‚   (   R   (    (    s4   lib/python2.7/site-packages/gevent/libev/corecffi.pyt   _setup_for_run_callback  s    c         C@ sF   |  j  rB t t |  ƒ j ƒ  t ƒ  d |  j k rB t d  ƒ qB n  d  S(   NR`   (   R]   t   superR   t   destroyRh   Rj   Ri   Rc   (   R   (    (    s4   lib/python2.7/site-packages/gevent/libev/corecffi.pyRˆ      s    	c         C@ s   t  j | ƒ S(   N(   R#   t   ev_userdata(   R   Rm   (    (    s4   lib/python2.7/site-packages/gevent/libev/corecffi.pyt   _can_destroy_loop(  s    c         C@ sf   t  j | t j ƒ t  j | ƒ t  j |  j ƒ t  j |  j ƒ t  j	 |  j
 ƒ |  ` |  ` |  `
 d  S(   N(   R#   Rk   R   t   NULLt   ev_loop_destroyt   gevent_zero_prepareRv   t   gevent_zero_checkRp   t   gevent_zero_timerRz   (   R   Rm   (    (    s4   lib/python2.7/site-packages/gevent/libev/corecffi.pyt   _destroy_loop,  s    c         C@ s   t  j S(   N(   R#   t	   EV_MAXPRI(   R   (    (    s4   lib/python2.7/site-packages/gevent/libev/corecffi.pyt   MAXPRI:  s    c         C@ s   t  j S(   N(   R#   t	   EV_MINPRI(   R   (    (    s4   lib/python2.7/site-packages/gevent/libev/corecffi.pyt   MINPRI>  s    c         C@ s9   t  t |  ƒ j | | | | ƒ t j |  j t j ƒ d  S(   N(   R‡   R   t   _default_handle_errorR#   t   ev_breakR]   t   EVBREAK_ONE(   R   t   contextt   typeR9   t   tb(    (    s4   lib/python2.7/site-packages/gevent/libev/corecffi.pyR•   B  s    c         C@ sI   d } | r | t  j O} n  | r2 | t  j O} n  t  j |  j | ƒ d  S(   Ni    (   R#   t   EVRUN_NOWAITt
   EVRUN_ONCEt   ev_runR]   (   R   t   nowaitt   onceR6   (    (    s4   lib/python2.7/site-packages/gevent/libev/corecffi.pyt   runF  s    c         C@ s   t  j |  j ƒ d  S(   N(   R#   t   ev_loop_forkR]   (   R   (    (    s4   lib/python2.7/site-packages/gevent/libev/corecffi.pyt   reinitO  s    c         C@ s   t  j |  j ƒ d  S(   N(   R#   t   ev_refR]   (   R   (    (    s4   lib/python2.7/site-packages/gevent/libev/corecffi.pyR‚   R  s    c         C@ s   t  j |  j ƒ d  S(   N(   R#   t   ev_unrefR]   (   R   (    (    s4   lib/python2.7/site-packages/gevent/libev/corecffi.pyRs   U  s    c         C@ s   t  j |  j | ƒ d  S(   N(   R#   R–   R]   (   R   t   how(    (    s4   lib/python2.7/site-packages/gevent/libev/corecffi.pyt   break_X  s    c         C@ s   t  j |  j ƒ d  S(   N(   R#   t	   ev_verifyR]   (   R   (    (    s4   lib/python2.7/site-packages/gevent/libev/corecffi.pyt   verify[  s    c         C@ s   t  j |  j ƒ S(   N(   R#   t   ev_nowR]   (   R   (    (    s4   lib/python2.7/site-packages/gevent/libev/corecffi.pyt   now^  s    c         C@ s   t  j |  j ƒ d  S(   N(   R#   t   ev_now_updateR]   (   R   (    (    s4   lib/python2.7/site-packages/gevent/libev/corecffi.pyt
   update_nowa  s    c         C@ s#   d |  j  j t |  ƒ |  j ƒ  f S(   Ns   <%s at 0x%x %s>(   t	   __class__R    t   idt   _format(   R   (    (    s4   lib/python2.7/site-packages/gevent/libev/corecffi.pyt   __repr__d  s    c         C@ s   t  j |  j ƒ S(   N(   R#   t   ev_iterationR]   (   R   (    (    s4   lib/python2.7/site-packages/gevent/libev/corecffi.pyt	   iterationg  s    c         C@ s   t  j |  j ƒ S(   N(   R#   t   ev_depthR]   (   R   (    (    s4   lib/python2.7/site-packages/gevent/libev/corecffi.pyt   depthk  s    c         C@ s   t  j |  j ƒ S(   N(   R#   t
   ev_backendR]   (   R   (    (    s4   lib/python2.7/site-packages/gevent/libev/corecffi.pyt   backend_into  s    c         C@ s=   t  j |  j ƒ } x$ t D] \ } } | | k r | Sq W| S(   N(   R#   Rµ   R]   R4   (   R   t   backendt   keyR9   (    (    s4   lib/python2.7/site-packages/gevent/libev/corecffi.pyR·   s  s
    c         C@ s   t  j |  j ƒ S(   N(   R#   t   ev_pending_countR]   (   R   (    (    s4   lib/python2.7/site-packages/gevent/libev/corecffi.pyt
   pendingcnt{  s    t   win32c         C@ s   t  j ƒ  d  S(   N(   R#   t   gevent_install_sigchld_handler(   R   (    (    s4   lib/python2.7/site-packages/gevent/libev/corecffi.pyt   install_sigchld  s    c         C@ s   t  j ƒ  d  S(   N(   R#   t   gevent_reset_sigchld_handler(   R   (    (    s4   lib/python2.7/site-packages/gevent/libev/corecffi.pyt   reset_sigchld„  s    c         C@ s,   |  j  r( |  j  j } | d k r( | Sn  d  S(   Ni    (   R]   t
   backend_fd(   R   R   (    (    s4   lib/python2.7/site-packages/gevent/libev/corecffi.pyt   fileno‡  s    	c         C@ s"   |  j  s t d ƒ ‚ n  |  j  j S(   Ns   operation on destroyed loop(   R]   RD   t	   activecnt(   R   (    (    s4   lib/python2.7/site-packages/gevent/libev/corecffi.pyRÂ     s    	N(/   R    R!   t   approx_timer_resolutionRc   t   error_handlert   _CHECK_POINTERt   _PREPARE_POINTERt   _TIMER_POINTERRY   Rn   Rt   Rx   R|   R~   R€   R…   R†   Rˆ   RŠ   R   t   propertyR’   R”   R•   t   FalseR    R¢   R‚   Rs   R#   R—   R¦   R¨   Rª   R¬   R°   R²   R´   R¶   R·   Rº   t   syst   platformR½   R¿   RÁ   RÂ   (    (    (    s4   lib/python2.7/site-packages/gevent/libev/corecffi.pyR   Ï   sN   							
															c         C@ s>   y# t  j |  ƒ }  t |  t  j ƒ Wn t d  ƒ ‚  n Xd  S(   N(   R   R3   R`   t   errnoRi   Rc   (   t   msg(    (    s4   lib/python2.7/site-packages/gevent/libev/corecffi.pyt
   _syserr_cb”  s    
c         C@ sa   |  d  k r% t j t j ƒ d  a n8 t |  ƒ rJ t j t j ƒ |  a n t d |  f ƒ ‚ d  S(   Ns!   Expected callable or None, got %r(	   Rc   R#   t   ev_set_syserr_cbR   R‹   R`   t   callableRÎ   t	   TypeError(   t   callback(    (    s4   lib/python2.7/site-packages/gevent/libev/corecffi.pyRi   ž  s    		(y   t
   __future__R    R   RÊ   t   __all__t   gevent._utilR	   t   gevent._interfacesR
   t   gevent.libevR   R   t   libR#   t   hasattrRË   t
   startswitht   AssertionErrorR   t   vfd_freet   vfd_gett   gevent._ffi.loopR   R   R   t
   _callbackst   EV_UNDEFt   UNDEFt   EV_NONEt   NONEt   EV_READt   READt   EV_WRITEt   WRITEt   EV_TIMERt   TIMERt   EV_PERIODICt   PERIODICt	   EV_SIGNALt   SIGNALt   EV_CHILDt   CHILDt   EV_STATt   STATt   EV_IDLEt   IDLEt
   EV_PREPAREt   PREPAREt   EV_CHECKt   CHECKt   EV_EMBEDt   EMBEDt   EV_FORKt   FORKt
   EV_CLEANUPt   CLEANUPt   EV_ASYNCt   ASYNCt	   EV_CUSTOMt   CUSTOMt   EV_ERRORt   ERRORt	   READWRITER“   R”   R‘   R’   t   EVBACKEND_PORTt   BACKEND_PORTt   EVBACKEND_KQUEUEt   BACKEND_KQUEUEt   EVBACKEND_EPOLLt   BACKEND_EPOLLt   EVBACKEND_POLLt   BACKEND_POLLt   EVBACKEND_SELECTt   BACKEND_SELECTRb   t	   FORKCHECKt   EVFLAG_NOINOTIFYt	   NOINOTIFYt   EVFLAG_SIGNALFDt   SIGNALFDt   EVFLAG_NOSIGMASKt	   NOSIGMASKR"   t   GEVENT_CORE_EVENTSR   R   Ra   R4   t   dictRB   R:   t   version_infot   bytesRK   R>   t   intR=   t   __builtin__t   longRI   RL   RS   R   R   R   R   RW   RX   RZ   t   _events_to_strR   t
   def_externRÎ   Ri   Rc   R`   Rd   t   LIBEV_EMBED(    (    (    s4   lib/python2.7/site-packages/gevent/libev/corecffi.pyt   <module>   s´   																																													Ä
	