ó
¨œž[c           @` st   d  Z  d d l m Z m Z m Z d d l Z d d l m Z m Z d e	 f d „  ƒ  YZ
 d e f d „  ƒ  YZ d S(	   sh   Select-based IOLoop implementation.

Used as a fallback for systems that don't support epoll or kqueue.
i    (   t   absolute_importt   divisiont   print_functionN(   t   IOLoopt
   PollIOLoopt   _Selectc           B` sD   e  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   sD   A simple, select()-based IOLoop implementation for non-Linux systemsc         C` sC   t  ƒ  |  _ t  ƒ  |  _ t  ƒ  |  _ |  j |  j |  j f |  _ d  S(   N(   t   sett   read_fdst	   write_fdst	   error_fdst   fd_sets(   t   self(    (    s6   lib/python2.7/site-packages/tornado/platform/select.pyt   __init__   s    c         C` s   d  S(   N(    (   R   (    (    s6   lib/python2.7/site-packages/tornado/platform/select.pyt   close"   s    c         C` s¤   | |  j  k s- | |  j k s- | |  j k r@ t d | ƒ ‚ n  | t j @r` |  j  j | ƒ n  | t j @r€ |  j j | ƒ n  | t j @r  |  j j | ƒ n  d  S(   Ns   fd %s already registered(	   R   R   R	   t   IOErrorR   t   READt   addt   WRITEt   ERROR(   R   t   fdt   events(    (    s6   lib/python2.7/site-packages/tornado/platform/select.pyt   register%   s    -c         C` s!   |  j  | ƒ |  j | | ƒ d  S(   N(   t
   unregisterR   (   R   R   R   (    (    s6   lib/python2.7/site-packages/tornado/platform/select.pyt   modify3   s    c         C` s4   |  j  j | ƒ |  j j | ƒ |  j j | ƒ d  S(   N(   R   t   discardR   R	   (   R   R   (    (    s6   lib/python2.7/site-packages/tornado/platform/select.pyR   7   s    c         C` sÄ   t  j  |  j |  j |  j | ƒ \ } } } i  } x+ | D]# } | j | d ƒ t j B| | <q7 Wx+ | D]# } | j | d ƒ t j B| | <qe Wx+ | D]# } | j | d ƒ t j B| | <q“ W| j	 ƒ  S(   Ni    (
   t   selectR   R   R	   t   getR   R   R   R   t   items(   R   t   timeoutt   readablet	   writeablet   errorsR   R   (    (    s6   lib/python2.7/site-packages/tornado/platform/select.pyt   poll<   s    $!!!(	   t   __name__t
   __module__t   __doc__R   R   R   R   R   R    (    (    (    s6   lib/python2.7/site-packages/tornado/platform/select.pyR      s   					t   SelectIOLoopc           B` s   e  Z d  „  Z RS(   c         K` s#   t  t |  ƒ j d t ƒ  |  d  S(   Nt   impl(   t   superR$   t
   initializeR   (   R   t   kwargs(    (    s6   lib/python2.7/site-packages/tornado/platform/select.pyR'   J   s    (   R!   R"   R'   (    (    (    s6   lib/python2.7/site-packages/tornado/platform/select.pyR$   I   s   (   R#   t
   __future__R    R   R   R   t   tornado.ioloopR   R   t   objectR   R$   (    (    (    s6   lib/python2.7/site-packages/tornado/platform/select.pyt   <module>   s
   /