ó
¨œž[c           @` sŒ   d  Z  d d l m Z m Z 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 „  Z d e	 j f d „  ƒ  YZ d S(	   sD   Lowest-common-denominator implementations of platform functionality.i    (   t   absolute_importt   divisiont   print_functionN(   t	   interface(   t   errno_from_exceptionc         C` sU   xD t  d ƒ D]6 } y |  j ƒ  Wn t k
 rA t j d ƒ q XPq W|  j ƒ  d  S(   Ni
   gü©ñÒMbP?(   t   ranget   closet   IOErrort   timet   sleep(   t   ft   i(    (    s6   lib/python2.7/site-packages/tornado/platform/common.pyt	   try_close   s    t   Wakerc           B` sD   e  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   sÓ   Create an OS independent asynchronous pipe.

    For use on platforms that don't have os.pipe() (or where pipes cannot
    be passed to select()), but do have sockets.  This includes Windows
    and Jython.
    c         C` s§  d d l  m } t j ƒ  |  _ | |  j j ƒ  ƒ |  j j t j t j d ƒ d } xè | d 7} t j ƒ  } | | j ƒ  ƒ | j d ƒ | j	 d ƒ | j
 ƒ  } y |  j j | ƒ PWqW t j k
 r:} t t d ƒ sò t | ƒ t j k rø ‚  n  | d k r-| j ƒ  |  j j ƒ  t j d ƒ ‚ n  | j ƒ  qW XqW W| j ƒ  \ |  _ } | |  j j ƒ  ƒ |  j j d ƒ |  j j d ƒ | j ƒ  |  j j ƒ  |  _ d  S(	   Ni   (   t   set_close_execi    s	   127.0.0.1t   WSAEADDRINUSEi
   s   Cannot bind trigger!(   s	   127.0.0.1i    (   t   autoR   t   sockett   writert   filenot
   setsockoptt   IPPROTO_TCPt   TCP_NODELAYt   bindt   listent   getsocknamet   connectt   errort   hasattrt   errnoR   R   R   t   acceptt   readert   setblockingt	   reader_fd(   t   selfR   t   countt   at   connect_addresst   detailt   addr(    (    s6   lib/python2.7/site-packages/tornado/platform/common.pyt   __init__"   s<    


c         C` s   |  j  j ƒ  S(   N(   R   R   (   R"   (    (    s6   lib/python2.7/site-packages/tornado/platform/common.pyR   Z   s    c         C` s   |  j  j ƒ  S(   N(   R   R   (   R"   (    (    s6   lib/python2.7/site-packages/tornado/platform/common.pyt   write_fileno]   s    c         C` s8   y |  j  j d ƒ Wn t t j t f k
 r3 n Xd  S(   Nt   x(   R   t   sendR   R   R   t
   ValueError(   R"   (    (    s6   lib/python2.7/site-packages/tornado/platform/common.pyt   wake`   s    c         C` sN   y- x& t  r+ |  j j d ƒ } | s Pq q WWn t t j f k
 rI n Xd  S(   Ni   (   t   TrueR   t   recvR   R   R   (   R"   t   result(    (    s6   lib/python2.7/site-packages/tornado/platform/common.pyt   consumef   s    	c         C` s   |  j  j ƒ  t |  j ƒ d  S(   N(   R   R   R   R   (   R"   (    (    s6   lib/python2.7/site-packages/tornado/platform/common.pyR   o   s    (	   t   __name__t
   __module__t   __doc__R(   R   R)   R-   R1   R   (    (    (    s6   lib/python2.7/site-packages/tornado/platform/common.pyR      s   	8					(   R4   t
   __future__R    R   R   R   R   R   t   tornado.platformR   t   tornado.utilR   R   R   (    (    (    s6   lib/python2.7/site-packages/tornado/platform/common.pyt   <module>   s   	