ó
O'—^c           @@  s  d  Z  d d l m 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 d l m Z d	 g Z d Z Z d
 Z Z d; Z 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 ƒ Z0 e e d. d ƒ Z1 e e d/ d0 ƒ Z2 y e3 e j4 e j5 f ƒ Z6 Wn# e7 k
 r¤e3 e j4 f ƒ Z6 n Xd1 e8 f d2 „  ƒ  YZ9 d3 e9 f d4 „  ƒ  YZ: d5 e9 f d6 „  ƒ  YZ; d7 e9 f d8 „  ƒ  YZ< d9 „  Z= d: „  Z> d S(<   sV   
kombu.utils.eventio
===================

Evented IO support for multiple platforms.

i    (   t   absolute_importN(   t   Integral(   t   detect_environmenti   (   t   fileno(   t	   get_errnot   polli   i   i   t   epollt   kqueuet   keventt	   KQ_EV_ADDt   KQ_EV_DELETEi   t   KQ_EV_ENABLEt   KQ_EV_CLEARi    t   KQ_EV_ERRORi @  t	   KQ_EV_EOFi €  t   KQ_FILTER_READiÿÿÿÿt   KQ_FILTER_WRITEiþÿÿÿt   KQ_FILTER_AIOiýÿÿÿt   KQ_FILTER_VNODEiüÿÿÿt   KQ_FILTER_PROCiûÿÿÿt   KQ_FILTER_SIGNALiúÿÿÿt   KQ_FILTER_TIMERiùÿÿÿt   KQ_NOTE_LOWATt   KQ_NOTE_DELETEt   KQ_NOTE_WRITEt   KQ_NOTE_EXTENDt   KQ_NOTE_ATTRIBt   KQ_NOTE_LINKt   KQ_NOTE_RENAMEt   kQ_NOTE_REVOKEi@   t   Pollerc           B@  s   e  Z d  „  Z RS(   c         C@  sF   y |  j  | ƒ SWn. t k
 rA } t | ƒ t j k rB ‚  qB n Xd  S(   N(   t   _pollt	   ExceptionR   t   errnot   EINTR(   t   selft   timeoutt   exc(    (    s5   /tmp/pip-unpacked-wheel-UAnTfW/kombu/utils/eventio.pyR   >   s
    (   t   __name__t
   __module__R   (    (    (    s5   /tmp/pip-unpacked-wheel-UAnTfW/kombu/utils/eventio.pyR   <   s   t   _epollc           B@  s5   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C@  s   t  ƒ  |  _ d  S(   N(   R   R(   (   R#   (    (    s5   /tmp/pip-unpacked-wheel-UAnTfW/kombu/utils/eventio.pyt   __init__H   s    c         C@  sL   y |  j  j | | ƒ Wn. t k
 rG } t | ƒ t j k rH ‚  qH n Xd  S(   N(   R(   t   registerR    R   R!   t   EEXIST(   R#   t   fdt   eventsR%   (    (    s5   /tmp/pip-unpacked-wheel-UAnTfW/kombu/utils/eventio.pyR*   K   s
    c         C@  sw   y |  j  j | ƒ Wn\ t j t t t f k
 r6 n= t t f k
 rr } t	 | ƒ t
 j t
 j f k rs ‚  qs n Xd  S(   N(   R(   t
   unregistert   sockett   errort
   ValueErrort   KeyErrort	   TypeErrort   IOErrort   OSErrorR   R!   t   ENOENTt   EPERM(   R#   R,   R%   (    (    s5   /tmp/pip-unpacked-wheel-UAnTfW/kombu/utils/eventio.pyR.   R   s    c         C@  s"   |  j  j | d  k	 r | n d ƒ S(   Niÿÿÿÿ(   R(   R   t   None(   R#   R$   (    (    s5   /tmp/pip-unpacked-wheel-UAnTfW/kombu/utils/eventio.pyR   [   s    c         C@  s   |  j  j ƒ  d  S(   N(   R(   t   close(   R#   (    (    s5   /tmp/pip-unpacked-wheel-UAnTfW/kombu/utils/eventio.pyR9   ^   s    (   R&   R'   R)   R*   R.   R   R9   (    (    (    s5   /tmp/pip-unpacked-wheel-UAnTfW/kombu/utils/eventio.pyR(   F   s
   					t   _kqueuec           B@  sb   e  Z e e Be Be BZ d  „  Z d „  Z d „  Z	 d „  Z
 d „  Z d „  Z d „  Z d „  Z RS(   c         C@  s1   t  ƒ  |  _ i  |  _ d  |  _ |  j j |  _ d  S(   N(   R   R:   t   _activeR8   t   on_file_changet   controlt	   _kcontrol(   R#   (    (    s5   /tmp/pip-unpacked-wheel-UAnTfW/kombu/utils/eventio.pyR)   f   s    		c         C@  s$   |  j  | | t ƒ | |  j | <d  S(   N(   t   _controlR	   R;   (   R#   R,   R-   (    (    s5   /tmp/pip-unpacked-wheel-UAnTfW/kombu/utils/eventio.pyR*   l   s    c         C@  sP   |  j  j | d  ƒ } | rL y |  j | | t ƒ WqL t j k
 rH qL Xn  d  S(   N(   R;   t   popR8   R?   R
   R/   R0   (   R#   R,   R-   (    (    s5   /tmp/pip-unpacked-wheel-UAnTfW/kombu/utils/eventio.pyR.   p   s    c         C@  s@   t  | d t d t t Bt Bd |  j ƒ} |  j | g d ƒ d  S(   Nt   filtert   flagst   fflagsi    (   R   R   R	   R   R   t   w_fflagsR>   (   R#   R,   t   ev(    (    s5   /tmp/pip-unpacked-wheel-UAnTfW/kombu/utils/eventio.pyt
   watch_filex   s
    	c         C@  s8   t  | d t d t d |  j ƒ} |  j | g d ƒ d  S(   NRA   RB   RC   i    (   R   R   R
   RD   R>   (   R#   R,   RE   (    (    s5   /tmp/pip-unpacked-wheel-UAnTfW/kombu/utils/eventio.pyt   unwatch_file   s
    	c         C@  sµ   | s
 d  Sg  } | t  @r< | j t | d t d | ƒƒ n  | sM | t @ro | j t | d t d | ƒƒ n  |  j } x6 | D]. } y | | g d ƒ Wq t k
 r¬ q Xq Wd  S(   NRA   RB   i    (   t   WRITEt   appendR   R   t   READR   R>   R1   (   R#   R,   R-   RB   t   keventsR=   t   e(    (    s5   /tmp/pip-unpacked-wheel-UAnTfW/kombu/utils/eventio.pyR?   †   s     
	c         C@  s<  |  j  d  d | ƒ } i  g  } } xñ | D]é } | j } | j t k rd | j | d ƒ t B| | <q) | j t k rª | j t	 @r t
 | | <q| j | d ƒ t B| | <q) | j t k rÖ | j | d ƒ t
 B| | <q) | j t k r) | j t @r|  j | ƒ n  | j | ƒ q) q) W| r,|  j | ƒ n  t | j ƒ  ƒ S(   Niè  i    (   R>   R8   t   identRA   R   t   getRJ   R   RB   R   t   ERRRH   R   R   RC   R   R.   RI   R<   t   listt   items(   R#   R$   RK   R-   t   file_changest   kR,   (    (    s5   /tmp/pip-unpacked-wheel-UAnTfW/kombu/utils/eventio.pyR   ™   s&    	c         C@  s   |  j  j ƒ  d  S(   N(   R:   R9   (   R#   (    (    s5   /tmp/pip-unpacked-wheel-UAnTfW/kombu/utils/eventio.pyR9   ¯   s    (   R&   R'   R   R   R   R   RD   R)   R*   R.   RF   RG   R?   R   R9   (    (    (    s5   /tmp/pip-unpacked-wheel-UAnTfW/kombu/utils/eventio.pyR:   b   s   							t   _selectc           B@  s>   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C@  s5   t  ƒ  t  ƒ  t  ƒ  f |  _ \ |  _ |  _ |  _ d  S(   N(   t   sett   _allt   _rfdt   _wfdt   _efd(   R#   (    (    s5   /tmp/pip-unpacked-wheel-UAnTfW/kombu/utils/eventio.pyR)   µ   s    c         C@  sg   t  | ƒ } | t @r) |  j j | ƒ n  | t @rF |  j j | ƒ n  | t @rc |  j j | ƒ n  d  S(   N(   R   RO   RY   t   addRH   RX   RJ   RW   (   R#   R,   R-   (    (    s5   /tmp/pip-unpacked-wheel-UAnTfW/kombu/utils/eventio.pyR*   º   s    


c         C@  s   xz |  j  |  j B|  j BD]a } y t | g g  g  d ƒ Wq t t j f k
 rx } t | ƒ t k ry |  j	 | ƒ qy q Xq Wd  S(   Ni    (
   RW   RX   RY   t   _selectft
   _selecterrR/   R0   R   t   SELECT_BAD_FDR.   (   R#   R,   R%   (    (    s5   /tmp/pip-unpacked-wheel-UAnTfW/kombu/utils/eventio.pyt   _remove_badÃ   s    c         C@  sv   y t  | ƒ } Wn/ t j k
 rA } t | ƒ t k r; d  S‚  n X|  j j | ƒ |  j j | ƒ |  j j | ƒ d  S(   N(	   R   R/   R0   R   R]   RW   t   discardRX   RY   (   R#   R,   R%   (    (    s5   /tmp/pip-unpacked-wheel-UAnTfW/kombu/utils/eventio.pyR.   Ë   s    c         C@  ss  y+ t  |  j |  j |  j | ƒ \ } } } WnT t t j f k
 r } t | ƒ t j	 k r_ d  St | ƒ t
 k r{ |  j ƒ  S‚  n Xi  } xF | D]> } t | t ƒ s³ | j ƒ  } n  | j | d ƒ t B| | <q WxF | D]> } t | t ƒ sü | j ƒ  } n  | j | d ƒ t B| | <qØ WxF | D]> } t | t ƒ sE| j ƒ  } n  | j | d ƒ t B| | <q!Wt | j ƒ  ƒ S(   Ni    (   R[   RW   RX   RY   R\   R/   R0   R   R!   R"   R]   R^   t
   isinstanceR   R   RN   RJ   RH   RO   RP   RQ   (   R#   R$   t   readt   writeR0   R%   R-   R,   (    (    s5   /tmp/pip-unpacked-wheel-UAnTfW/kombu/utils/eventio.pyR   Ø   s.    (
c         C@  s+   |  j  j ƒ  |  j j ƒ  |  j j ƒ  d  S(   N(   RW   t   clearRX   RY   (   R#   (    (    s5   /tmp/pip-unpacked-wheel-UAnTfW/kombu/utils/eventio.pyR9   ó   s    (   R&   R'   R)   R*   R^   R.   R   R9   (    (    (    s5   /tmp/pip-unpacked-wheel-UAnTfW/kombu/utils/eventio.pyRT   ³   s   						c           C@  s/   t  ƒ  d k r t St r t St r' t St Sd  S(   Nt   default(   R   RT   R   R(   R   (    (    (    s5   /tmp/pip-unpacked-wheel-UAnTfW/kombu/utils/eventio.pyt   _get_pollerù   s    c          O@  s   t  ƒ  |  | Ž  S(   N(   Re   (   t   argst   kwargs(    (    s5   /tmp/pip-unpacked-wheel-UAnTfW/kombu/utils/eventio.pyR     s    i   (?   t   __doc__t
   __future__R    R!   t   selectt
   __select__R/   t   numbersR   t	   kombu.synR   t    R   t   compatR   t   __all__RJ   t	   POLL_READRH   t
   POLL_WRITERO   t   POLL_ERRR[   R0   R\   t   getattrR8   R   R   R   R	   R
   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   t   KQ_NOTE_REVOKERU   t   EBADFt   WSAENOTSOCKR]   t   AttributeErrort   objectR   R(   R:   RT   Re   R   (    (    (    s5   /tmp/pip-unpacked-wheel-UAnTfW/kombu/utils/eventio.pyt   <module>   s`   	


		
QF	