ó
¾Ã9Qc           @   sÊ   d  Z  d d l Z d d l Z d d l m Z d d l Z d d d g Z d a	 d „  Z
 e
 a d „  Z d	 „  Z d
 „  Z d a d a d „  Z d e j j f d „  ƒ  YZ d e j j f d „  ƒ  YZ d S(   sM   This module contains convenience functions for using dbus-activated services.iÿÿÿÿN(   t   _gobjectt   Objectt   InterfaceTypet   set_mainloopc           C   s   t  j ƒ  d  S(   N(   t   __mainloop__t   quit(    (    (    s5   /usr/lib/python2.7/site-packages/slip/dbus/service.pyt   __glib_quit_cb__%   s    c         C   s
   |  a  d  S(   N(   R   (   t   mainloop(    (    s5   /usr/lib/python2.7/site-packages/slip/dbus/service.pyR   0   s    c         C   s
   |  a  d  S(   N(   t   __quit_cb__(   t   quit_cb(    (    s5   /usr/lib/python2.7/site-packages/slip/dbus/service.pyt   set_quit_cb5   s    c           C   s   t  ƒ  d  S(   N(   R   (    (    (    s5   /usr/lib/python2.7/site-packages/slip/dbus/service.pyR	   :   s    t   __slip_dbus_service_sender__t   __slip_dbus_service_reply_cb__t   __slip_dbus_service_error_cb__c            sû   ˆ j  d  k	 r! ˆ j  ‰ t ‰ n t ‰ t ‰ ˆ j d  k	 rN ˆ j ‰  t ‰ n t ‰  t ‰ ˆ ‰ ‡  ‡ ‡ ‡ ‡ ‡ f d †  } xi t d „  t ˆ ƒ ƒ D]O } | d k r¶ ˆ | _  q˜ | d k rÎ ˆ  | _ q˜ t	 | | t
 ˆ | ƒ ƒ q˜ Wˆ j | _ | S(   Nc      	      s  ˆ j  ˆ ƒ } | d  k	 rv ˆ ˆ d ‰ ˆ ˆ d ‰ ˆ rG ˆ ˆ =n  ˆ rf ˆ ˆ d =ˆ ˆ d =n  ˆ j | ƒ n  t ˆ	 d t ˆ d d  ƒ ƒ ‰  | d  k	 rû ˆ  rû ‡  ‡ ‡ ‡	 ‡
 ‡ ‡ ‡ f d †  } ‡ ‡ f d †  } t j | ˆ  d | d | ƒn  ˆ	 ˆ ˆ ˆ Ž } ˆ j ƒ  | Sd  S(	   Ni    i   t   _slip_polkit_auth_requiredt   default_polkit_auth_requiredc            s®   |  r ˆ r ˆ ˆ ˆ ˆ Ž q  d  } y ˆ ˆ ˆ ˆ Ž } Wn t k
 rV } | } n X| rj ˆ | ƒ q  | d  k r€ ˆ ƒ  q  ˆ | ƒ n ˆ t j ˆ  ƒ ƒ ˆ j ƒ  d  S(   N(   t   Nonet	   Exceptiont   polkitt   NotAuthorizedExceptiont   timeout_restart(   t   is_autht   errort   resultt   e(   t	   action_idt   error_cbt   kt   methodt   method_is_asynct   pt   reply_cbt   self(    s5   /usr/lib/python2.7/site-packages/slip/dbus/service.pyt   reply_handlerm   s    

c            s   ˆ  |  ƒ ˆ j  ƒ  d  S(   N(   R   (   R   (   R   R    (    s5   /usr/lib/python2.7/site-packages/slip/dbus/service.pyt   error_handler   s    
R!   R"   (   t   getR   t   sender_seent   getattrR   t   IsSystemBusNameAuthorizedAsyncR   (   R    R   R   t   senderR!   R"   t   retval(   t   async_callbackst   hide_async_callbackst   hide_sender_keywordR   R   t   sender_keyword(   R   R   R   R   R   R    s5   /usr/lib/python2.7/site-packages/slip/dbus/service.pyt   wrapped_methodW   s*    
		$"
c         S   s   |  d  d k S(   Ni   t   _dbus_(    (   t   x(    (    s5   /usr/lib/python2.7/site-packages/slip/dbus/service.pyt   <lambda>›   s    t   _dbus_sender_keywordt   _dbus_async_callbacks(   R1   R   t   Falset   SENDER_KEYWORDt   TrueR2   t   ASYNC_CALLBACKSt   filtert   dirt   setattrR%   t	   func_name(   R   R-   t   attr(    (   R)   R*   R+   R   R   R,   s5   /usr/lib/python2.7/site-packages/slip/dbus/service.pyt   wrap_methodD   s(    				Dc           B   s   e  Z d  „  Z RS(   c         C   sa   x? | j  ƒ  D]1 \ } } t | d t ƒ r t | ƒ | | <q q Wt t |  ƒ j |  | | | ƒ S(   Nt   _dbus_is_method(   t	   iteritemsR%   R3   R<   t   superR   t   __new__(   t   clst   namet   basest   dctt   attrnameR;   (    (    s5   /usr/lib/python2.7/site-packages/slip/dbus/service.pyR@   ¬   s    (   t   __name__t
   __module__R@   (    (    (    s5   /usr/lib/python2.7/site-packages/slip/dbus/service.pyR   ª   s   c           B   s}   e  Z e Z e Z d  Z e Z d Z	 e
 ƒ  Z i  Z i  Z d Z d d d d d „ Z d „  Z d „  Z d d „ Z d „  Z RS(   i   c         C   sG   t  t |  ƒ j | | | ƒ | d  k r: |  j j |  _ n	 | |  _ d  S(   N(   R?   R   t   __init__R   t	   __class__t
   persistent(   R    t   connt   object_patht   bus_nameRJ   (    (    s5   /usr/lib/python2.7/site-packages/slip/dbus/service.pyRH   Æ   s    c         C   sC   |  j  r* t t j ƒ d k r* t ƒ  t Sd  t _ |  j t _	 t S(   Ni    (
   RJ   t   lenR   t   sendersR	   R3   R   t   current_sourcet   default_durationt   duration(   R    (    (    s5   /usr/lib/python2.7/site-packages/slip/dbus/service.pyt   _timeout_cbÏ   s    	c         C   sÏ   |  j  } | rË | | f t j k rË t j j | | f ƒ t j | j | ƒ t t j | ƒ d k r t j | j ƒ  t j | =t j | =n  |  j rË t t j ƒ d k rË t j d  k rË t
 ƒ  qË n  d  S(   Ni    (   t
   connectionR   RO   t   removet   connections_sendersRN   t   connections_smobjsRJ   RP   R   R	   (   R    RB   t	   old_ownert	   new_ownerRK   (    (    s5   /usr/lib/python2.7/site-packages/slip/dbus/service.pyt   _name_owner_changedÙ   s    	
c         C   s›   | s |  j  j } n  t j s. | t j k r: | t _ n  |  j sY t t j ƒ d k r— t j ru t j	 t j ƒ n  t j
 t j d |  j ƒ t _ n  d  S(   Ni    iè  (   RI   RQ   R   RR   RJ   RN   RO   RP   t   GObjectt   source_removet   timeout_addRS   (   R    RR   (    (    s5   /usr/lib/python2.7/site-packages/slip/dbus/service.pyR   ê   s    	c         C   s«   | |  j  f t j k r§ t j j | |  j  f ƒ |  j  t j j ƒ  k r t ƒ  t j |  j  <|  j  j d |  j d d d d ƒ t j	 |  j  <n  t j |  j  j | ƒ n  d  S(   Nt   handler_functiont   signal_namet   NameOwnerChangedt   dbus_interfaces   org.freedesktop.DBus(
   RT   R   RO   t   addRV   t   keyst   sett   add_signal_receiverRZ   RW   (   R    R'   (    (    s5   /usr/lib/python2.7/site-packages/slip/dbus/service.pyR$   ö   s    	N(   RF   RG   R   t   __metaclass__R3   RJ   RQ   RR   R   RP   Rd   RO   RV   RW   R   RH   RS   RZ   R   R$   (    (    (    s5   /usr/lib/python2.7/site-packages/slip/dbus/service.pyR   ´   s   			
	(   R   R   (   t   __doc__t   dbust   dbus.servicet   slip._wrappersR    R[   R   t   __all__R   R   R   R   R   R
   R	   R4   R6   R<   t   serviceR   R   (    (    (    s5   /usr/lib/python2.7/site-packages/slip/dbus/service.pyt   <module>   s"   				 	f
