ó
½-'Nc           @   sf   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 e f d „  ƒ  YZ	 d S(   iÿÿÿÿN(   t   diff(   t   ProcessInformation(   t   detect_jiffies(   t   DataWatchert   ActiveProcessInfoc           B   s_   e  Z d  Z d d	 d	 d	 e j d „ Z d „  Z d „  Z d „  Z	 d „  Z
 d „  Z d „  Z RS(
   s   active-process-infos   /procc      
   C   sz   t  t |  ƒ j ƒ  | |  _ i  |  _ i  |  _ | p: t ƒ  |  _ | |  _ t	 |  _
 t d | d | d | d | ƒ |  _ d  S(   Nt   proc_dirt   jiffiest	   boot_timet   uptime(   t   superR   t   __init__t	   _proc_dirt   _persist_processest   _previous_processesR   t   _jiffies_per_sect   _popent   Truet
   _first_runR   t   _process_info(   t   selfR   R   R   R   t   popen(    (    sG   /usr/lib/python2.7/dist-packages/landscape/monitor/activeprocessinfo.pyR
      s    					c         C   sL   t  t |  ƒ j | ƒ |  j |  j |  j t ƒ |  j j j	 d |  j
 ƒ d  S(   Nt   resynchronize(   R	   R   t   registert   call_on_acceptedt   message_typet   exchangeR   t   registryt   reactort   call_ont   _resynchronize(   R   t   manager(    (    sG   /usr/lib/python2.7/dist-packages/landscape/monitor/activeprocessinfo.pyR      s    c         C   s   t  |  _ i  |  _ i  |  _ d S(   s"   Resynchronize active process data.N(   R   R   R   R   (   R   (    (    sG   /usr/lib/python2.7/dist-packages/landscape/monitor/activeprocessinfo.pyR       s    		c         C   sG   i  } |  j  r t | d <n  | j |  j ƒ  ƒ | rC d | d <| Sd  S(   Ns   kill-all-processess   active-process-infot   type(   R   R   t   updatet   _detect_process_changest   None(   R   t   message(    (    sG   /usr/lib/python2.7/dist-packages/landscape/monitor/activeprocessinfo.pyt   get_message&   s    	
c         C   s/   t  |  _ |  j |  _ i  |  _ |  j j ƒ  d  S(   N(   t   FalseR   R   R   R   t   flush(   R   (    (    sG   /usr/lib/python2.7/dist-packages/landscape/monitor/activeprocessinfo.pyt   persist_data1   s    		c         C   sE   i  } x8 |  j  j ƒ  D]' } | d d k r | | | d <q q W| S(   Nt   statet   Xt   pid(   R   t   get_all_process_info(   R   t	   processest   process_info(    (    sG   /usr/lib/python2.7/dist-packages/landscape/monitor/activeprocessinfo.pyt   _get_processes:   s
    c         C   s—   i  } |  j  ƒ  } t |  j | ƒ \ } } } | rL t | j ƒ  ƒ | d <n  | rk t | j ƒ  ƒ | d <n  | rŠ t | j ƒ  ƒ | d <n  | |  _ | S(   Ns   add-processess   update-processess   kill-processes(   R.   R    R   t   listt
   itervaluest   iterkeysR   (   R   t   changesR,   t   createst   updatest   deletes(    (    sG   /usr/lib/python2.7/dist-packages/landscape/monitor/activeprocessinfo.pyR!   A   s    	N(   t   __name__t
   __module__R   R"   t
   subprocesst   PopenR
   R   R   R$   R'   R.   R!   (    (    (    sG   /usr/lib/python2.7/dist-packages/landscape/monitor/activeprocessinfo.pyR   	   s   							(
   R8   t   landscape.diffR    t   landscape.lib.processR   t   landscape.lib.jiffiesR   t   landscape.monitor.pluginR   R   (    (    (    sG   /usr/lib/python2.7/dist-packages/landscape/monitor/activeprocessinfo.pyt   <module>   s
   