<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
3
uAc                 @   s   d 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 d	d
dgZdadd Zeadd Zdd Zdd Zdadadd ZG dd
 d
ejjZG dd	 d	eeejjZdS )zMThis module contains convenience functions for using dbus-activated services.    )absolute_importN)with_metaclass   )_glib   )polkitObjectInterfaceTypeset_mainloopc               C   s   t j  d S )N)__mainloop__quit r   r   /usr/lib/python3.6/service.py__glib_quit_cb__)   s    r   c             C   s   | a d S )N)r   )Zmainloopr   r   r   r
   4   s    c             C   s   | a d S )N)__quit_cb__)quit_cbr   r   r   set_quit_cb9   s    r   c               C   s
   t   d S )N)r   r   r   r   r   r   >   s    r   Z__slip_dbus_service_sender____slip_dbus_service_reply_cb____slip_dbus_service_error_cb__c                s   j d k	rj dntdjd k	r4j dnt d  fdd}xLdd tD D ]6}|dkr|_ ql|dkr |_qlt||t| qlW j|_|S )	NFTc                s   j }|d k	rVd  d  r4= rLd = d = j| t	dtdd  |d k	r r 	
fdd}fdd}tj| ||d	 n	f}j  |S d S )
Nr   r   Z_slip_polkit_auth_requireddefault_polkit_auth_requiredc                s   | rrf qd }yf}W n& t k
rX } z
|}W Y d d }~X nX |rh| q|d krx  q| ntj  j  d S )N)	Exceptionr   ZNotAuthorizedExceptiontimeout_restart)Zis_autherrorresulte)	action_iderror_cbkmethodmethod_is_asyncpreply_cbselfr   r   reply_handlerq   s    

z:wrap_method.<locals>.wrapped_method.<locals>.reply_handlerc                s    |  j   d S )N)r   )r   )r   r"   r   r   error_handler   s    z:wrap_method.<locals>.wrapped_method.<locals>.error_handler)r#   r$   )getsender_seengetattrr   ZIsSystemBusNameAuthorizedAsyncr   )r"   r    r   senderr#   r$   Zretval)async_callbackshide_async_callbackshide_sender_keywordr   r   sender_keyword)r   r   r   r    r!   r"   r   wrapped_method[   s,    



"z#wrap_method.<locals>.wrapped_methodc             s   s"   | ]}|d d dkr|V  qd S )N   Z_dbus_r   ).0xr   r   r   	<genexpr>   s    zwrap_method.<locals>.<genexpr>_dbus_sender_keyword_dbus_async_callbacks)r2   SENDER_KEYWORDr3   ASYNC_CALLBACKSdirsetattrr'   __name__)r   r-   attrr   )r)   r*   r+   r   r   r,   r   wrap_methodH   s(    

Er:   c                   s   e Zd Z fddZ  ZS )r	   c                sD   x,|j  D ] \}}t|ddr
t|||< q
W tt| j| |||S )NZ_dbus_is_methodF)itemsr'   r:   superr	   __new__)clsnamebasesZdctZattrnamer9   )	__class__r   r   r=      s    zInterfaceType.__new__)r8   
__module____qualname__r=   __classcell__r   r   )rA   r   r	      s   c                   sb   e Zd ZdZdZeZdZe Zi Z	i Z
dZd fdd	Zdd Zdd	 Zdd
dZdd Z  ZS )r   F   Nc                s2   t t| j||| |d kr(| jj| _n|| _d S )N)r<   r   __init__rA   
persistent)r"   connZobject_pathZbus_namerG   )rA   r   r   rF      s    zObject.__init__c             C   s2   | j  r ttjdkr t  dS d t_| jt_dS )Nr   F)rG   lenr   sendersr   current_sourcedefault_durationduration)r"   r   r   r   _timeout_cb   s    zObject._timeout_cbc             C   s   | j }| r||ftjkrtjj||f tj| j| ttj| dkrjtj| j  tj|= tj|= | j rttjdkrtjd krt	  d S )Nr   )

connectionr   rJ   removeconnections_sendersrI   connections_smobjsrG   rK   r   )r"   r?   Z	old_ownerZ	new_ownerrH   r   r   r   _name_owner_changed   s    
zObject._name_owner_changedc             C   sf   |s| j j}tj s|tjkr$|t_| j s:ttjdkrbtjrLtj	tj tj
tjd | jt_d S )Nr   i  )rA   rL   r   rM   rG   rI   rJ   rK   GLibZsource_removeZtimeout_addrN   )r"   rM   r   r   r   r      s    zObject.timeout_restartc             C   sp   || j ftjkrltjj|| j f | j tjkrZt tj| j < | j j| jdd|dtj| j < tj| j  j| d S )NZNameOwnerChangedzorg.freedesktop.DBus)Zhandler_functionZsignal_nameZdbus_interfaceZarg1)	rO   r   rJ   addrQ   setZadd_signal_receiverrS   rR   )r"   r(   r   r   r   r&      s    zObject.sender_seen)NNNN)N)r8   rB   rC   rG   rL   rM   rK   rV   rJ   rQ   rR   r   rF   rN   rS   r   r&   rD   r   r   )rA   r   r      s   

)r   r   )__doc__Z
__future__r   ZdbusZdbus.serviceZsixr   Z	_wrappersr   rT    r   __all__r   r   r   r
   r   r   r4   r5   r:   Zservicer	   r   r   r   r   r   <module>   s&   
 g
