ó
ÌŠxac           @   sƒ   d  d l  Z  d  d l Z d  d l Z d e f d „  ƒ  YZ d e j f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d	 „  ƒ  YZ d S(
   iÿÿÿÿNt   MsgQueuec           B   s¡   e  Z d  d d d e e d „ Z d „  Z d „  Z e d d „ Z d d e e d d „ Z	 d „  Z
 d	 „  Z d
 „  Z d „  Z d „  Z d d „ Z d d „ Z RS(   s   162.213.33.247t   kernelt   topicc   	      K   sÔ   | |  _  | r& d | d <d | d <n  | j d | ƒ | j d d ƒ | j d d ƒ | j d | ƒ d  |  _ d  |  _ t j |   } t j | ƒ |  _ |  j j ƒ  |  _ |  j j d	 |  j  d
 | ƒ | |  _	 d  S(   Nt	   localhostt   hosti£#  t   porti(  t   connection_attemptsi   t	   heartbeatt   exchanget   exchange_type(
   t   exchange_namet
   setdefaultt   Nonet
   connectiont   channelt   pikat   ConnectionParameterst   BlockingConnectiont   exchange_declaret   supports_global_qos(	   t   st   addressR   R	   t   heartbeat_intervalR   t   localt   kwargst   params(    (    s(   /srv/kernel/kteam-tools/libs/ktl/msgq.pyt   __init__   s    	
		c         C   sT   |  j  d  k	 r( |  j  j ƒ  d  |  _  n  |  j d  k	 rP |  j j ƒ  d  |  _ n  d  S(   N(   R   R   t   closeR   (   R   (    (    s(   /srv/kernel/kteam-tools/libs/ktl/msgq.pyR   $   s    c         C   s   |  j  ƒ  d  S(   N(   R   (   R   (    (    s(   /srv/kernel/kteam-tools/libs/ktl/msgq.pyt   __del__,   s    c            s¼   ‡  f d †  } |  j  j d d ƒ t | t ƒ r= | g } n  |  j  j | d | d | ƒx0 | D]( } |  j  j d |  j d | d | ƒ q` W|  j  j d | d	 t d
 | ƒ |  j  j	 ƒ  d  S(   Nc            s   t  j | ƒ } ˆ  | ƒ d  S(   N(   t   jsont   loads(   R   t   methodt
   propertiest   bodyt   payload(   t   handler_function(    s(   /srv/kernel/kteam-tools/libs/ktl/msgq.pyt   wrapped_handler0   s    t   prefetch_counti   t   durablet	   argumentsR   t   queuet   routing_keyt   auto_ackt   on_message_callback(
   R   t	   basic_qost
   isinstancet   strt   queue_declaret
   queue_bindR
   t   basic_consumet   Truet   start_consuming(   R   t
   queue_nameR)   R#   t   queue_durablet   queue_argumentsR$   t   key(    (   R#   s(   /srv/kernel/kteam-tools/libs/ktl/msgq.pyt   listen/   s    &c   
         sÝ   ‡ ‡  f d †  } |  j  r7 |  j j d d d t ƒ n |  j j d d ƒ t | t ƒ re | g } n  |  j j | d | d | d | ƒx0 | D]( }	 |  j j d |  j d	 | d
 |	 ƒ qŽ W|  j j	 d	 | d t
 d | ƒ d  S(   Nc            s   t  | t ƒ r! | j d ƒ } n  t j | ƒ } ˆ d  k	 rI ˆ | ƒ n  ˆ  d  k	 rk ˆ  |  | | | ƒ n  |  j | j ƒ d  S(   Ns   utf-8(   R-   t   bytest   decodeR   R   R   t	   basic_ackt   delivery_tag(   R   R   R    R!   R"   (   t   handlerR#   (    s(   /srv/kernel/kteam-tools/libs/ktl/msgq.pyR$   @   s    R%   i   t
   global_qosR&   t   auto_deleteR'   R   R(   R)   R*   R+   (   R   R   R,   R2   R-   R.   R/   R0   R
   R1   t   False(
   R   R4   R)   R#   R=   R5   R?   R6   R$   R7   (    (   R#   R=   s(   /srv/kernel/kteam-tools/libs/ktl/msgq.pyt   listen_worker?   s    
	"&c         C   s   |  j  j ƒ  d  S(   N(   R   R3   (   R   (    (    s(   /srv/kernel/kteam-tools/libs/ktl/msgq.pyt   listen_startW   s    c         C   s   |  j  j ƒ  d  S(   N(   R   t   stop_consuming(   R   (    (    s(   /srv/kernel/kteam-tools/libs/ktl/msgq.pyt   listen_stop[   s    c         C   sP   |  j  j d | d t ƒ } | s% d  Si | j j d 6| j j d 6| j j d 6S(   NR(   t   passivet   consumer_countt   message_count(   R   R/   R2   R   R   R(   RF   RG   (   R   R4   t   res(    (    s(   /srv/kernel/kteam-tools/libs/ktl/msgq.pyt
   queue_info_   s    c         C   s   |  j  j | ƒ d  S(   N(   R   t   queue_delete(   R   R4   (    (    s(   /srv/kernel/kteam-tools/libs/ktl/msgq.pyRJ   l   s    c         C   s   |  j  j | ƒ d  S(   N(   R   t   exchange_delete(   R   R4   (    (    s(   /srv/kernel/kteam-tools/libs/ktl/msgq.pyRK   o   s    c      	   C   sS   t  j | ƒ } t j d d d | ƒ } |  j j d |  j d | d | d | ƒ d  S(   Nt   delivery_modei   t   priorityR   R)   R!   R    (   R   t   dumpsR   t   BasicPropertiesR   t   basic_publishR
   (   R   R)   R"   RM   t   message_bodyR    (    (    s(   /srv/kernel/kteam-tools/libs/ktl/msgq.pyt   publishr   s    c         C   s/   t  j |  j | | | ƒ } |  j j | ƒ d  S(   N(   t	   functoolst   partialRR   R   t   add_callback_threadsafe(   R   R)   R"   RM   t   cb(    (    s(   /srv/kernel/kteam-tools/libs/ktl/msgq.pyt   publish_threadsafew   s    N(   t   __name__t
   __module__R   R@   R   R   R   R2   R8   RA   RB   RD   RI   RJ   RK   RR   RW   (    (    (    s(   /srv/kernel/kteam-tools/libs/ktl/msgq.pyR       s   							t   MsgQueueCredentialsc           B   s   e  Z RS(    (   RX   RY   (    (    (    s(   /srv/kernel/kteam-tools/libs/ktl/msgq.pyRZ   |   s   t   MsgQueueServicec           B   sl   e  Z d  Z d Z d Z d Z i e d 6e d 6e d 6e d 6Z i d e 6d e 6d	 e 6Z d e	 d
 „ Z
 RS(   sÂ   
    Service oriented interface for creating a message queue.  This allows
    us to direct that services appropriatly and choose appropriate
    authentication.  Start with hardwired data.
    s   10.131.229.185s   10.15.182.2t	   dashboardt   mainlinet   announcet   ckcti£#  i¤#  i¥#  c         K   s  d | k r" | j  d ƒ d } n | } | j d | ƒ | j d ƒ d  k rl |  j j | |  j ƒ | d <n  | rœ |  j j | d d ƒ | d <d | d <n  d | k s¸ | d d  k rà d	 j | ƒ } t j	 | | ƒ | d <n  t
 | d
 <t t |  ƒ j |   d  S(   Nt   -i    t   virtual_hostR   i©#  R   R   t   credentialss   {}-anonR   (   t   splitR   t   getR   t
   server_mapt   server_ps45t	   local_mapt   formatR   t   PlainCredentialsR2   t   superR[   R   (   R   t   serviceR   R   t   vhostt   cred(    (    s(   /srv/kernel/kteam-tools/libs/ktl/msgq.pyR   ˜   s    
N(   RX   RY   t   __doc__t   server_argyleRf   t
   server_ps5Re   Rg   R   R@   R   (    (    (    s(   /srv/kernel/kteam-tools/libs/ktl/msgq.pyR[   €   s   

t   MsgQueueCkctc           B   s   e  Z d  „  Z RS(   c         K   s*   | j  d d ƒ t t |  ƒ j |   d  S(   NRk   R_   (   R   Rj   Rq   R   (   R   R   (    (    s(   /srv/kernel/kteam-tools/libs/ktl/msgq.pyR   ·   s    (   RX   RY   R   (    (    (    s(   /srv/kernel/kteam-tools/libs/ktl/msgq.pyRq   ³   s   (	   RS   R   R   t   objectR    Ri   RZ   R[   Rq   (    (    (    s(   /srv/kernel/kteam-tools/libs/ktl/msgq.pyt   <module>   s   u3