σ
ίόΪ\c           @` sM  d  d l  m Z m Z m Z d  d l m Z d  d l Z d  d l Z d  d l m	 Z	 d d l
 m Z d d l m Z m Z d d l m Z m Z m Z e j e  Z d	 d Z y e d d d d  Z Wn  e k
 rκ e d d  Z n Xe e e j  d   Z e	 j d d d d   Z e	 j e d d   Z d   Z  d   Z! d S(   i    (   t   print_functiont   divisiont   absolute_import(   t   ThreadPoolExecutorN(   t   geni   (   t   protocol(   t   finalizet   PY3(   t   get_ipt   get_ipv6t   nbytesi
   i   t   max_workersi   t   thread_name_prefixs   Dask-Offloadc         O` s   t  j |  | |  S(   N(   t   _offload_executort   submit(   t   fnt   argst   kwargs(    (    s5   lib/python2.7/site-packages/distributed/comm/utils.pyt   offload   s    t   messagec         #` sJ        f d   } t  r. t |  V} n	 |   } t j |   d S(   sI   
    Serialize a message into a list of Distributed protocol frames.
    c       	   ` sc   y) t  t j  d  d  d    SWn3 t k
 r^ }  t j d   t j |     n Xd  S(   Nt   serializerst   on_errort   contexts   Unserializable Message: %s(   t   listR   t   dumpst	   Exceptiont   loggert   infot	   exception(   t   e(   R   t   msgR   R   (    s5   lib/python2.7/site-packages/distributed/comm/utils.pyt
   _to_frames)   s     N(   R   R   R   t   Return(   R   R   R   R   R   t   res(    (   R   R   R   R   s5   lib/python2.7/site-packages/distributed/comm/utils.pyt	   to_frames#   s
    	c         #` sk   t  t t          f d   }   rO  t k rO t |  V} n	 |   } t j |   d S(   s<   
    Unserialize a list of Distributed protocol frames.
    c          ` sf   y t  j  d   d  SWnB t k
 ra  d k rB d }  n  }  t j d  |     n Xd  S(   Nt   deserializet   deserializersiθ  s   [too large to display]s$   truncated data stream (%d bytes): %s(   R   t   loadst   EOFErrorR   t   error(   t   datastr(   R#   R$   t   framest   size(    s5   lib/python2.7/site-packages/distributed/comm/utils.pyt   _from_framesD   s    	N(   t   sumt   mapR
   t   FRAME_OFFLOAD_THRESHOLDR   R   R    (   R)   R#   R$   R+   R!   (    (   R#   R$   R)   R*   s5   lib/python2.7/site-packages/distributed/comm/utils.pyt   from_frames=   s    	c         ` s   t  |  j j        s1 t d |  f   n    f d   } | t j  } | d k rm | t j  } n  | d k r t d   n  | j   S(   s?   
    Get the bound address of a started Tornado TCPServer.
    s   TCP Server %r not started yet?c         ` s(   x!   D] } | j  |  k r | Sq Wd  S(   N(   t   familyt   None(   t   famt   sock(   t   sockets(    s5   lib/python2.7/site-packages/distributed/comm/utils.pyt   _look_for_familyb   s    s'   No Internet socket found on TCPServer??N(	   R   t   _socketst   valuest   RuntimeErrort   sockett   AF_INETR1   t   AF_INET6t   getsockname(   t
   tcp_serverR5   R3   (    (   R4   s5   lib/python2.7/site-packages/distributed/comm/utils.pyt   get_tcp_server_addressZ   s    c         C` s.   |  d k r t    S|  d k r& t   S|  Sd S(   sm   
    Ensure the given host string (or IP) denotes a concrete host, not a
    wildcard listening address.
    s   0.0.0.0t    s   ::N(   s   0.0.0.0R?   (   R   R	   (   t   host(    (    s5   lib/python2.7/site-packages/distributed/comm/utils.pyt   ensure_concrete_hosts   s
    i   ("   t
   __future__R    R   R   t   concurrent.futuresR   t   loggingR9   t   tornadoR   R?   R   t   compatibilityR   R   t   utilsR   R	   R
   t	   getLoggert   __name__R   R.   R   t	   TypeErrort   shutdownR   t	   coroutineR1   R"   t   TrueR/   R>   RA   (    (    (    s5   lib/python2.7/site-packages/distributed/comm/utils.pyt   <module>   s,   
		