File: //usr/lib/python3.9/site-packages/dasbus/client/__pycache__/observer.cpython-39.pyc
a
װ_[ � @ s� d dl Z d dlmZ d dlmZ d dlmZ d dlZe�dd� d dl m
Z
e �e�Z
g d�ZG d d
� d
e�ZG dd� de�ZG d
d� de�ZdS )� N)�partial)�DBUS_FLAG_NONE)�Signal�Gioz2.0)r )�DBusObserverError�DBusObserver�GLibMonitoringc @ s e Zd ZdZdS )r z'Exception class for the DBus observers.N)�__name__�
__module__�__qualname__�__doc__� r
r
�:/usr/lib/python3.9/site-packages/dasbus/client/observer.pyr ( s r c @ sH e Zd ZdZeeddfdd��Zedd� �Zedd� �Zed d
� �Z dS )r z4The low-level DBus monitoring library based on GLib.Nc C sT d}d}|rt | j|dfd�}|r4t | j|dfd�}t�|||||�}t | j||�S )z,Watch a service name on the DBus connection.Nr
)� user_data)r �_name_appeared_callback�_name_vanished_callbackr Zbus_watch_name_on_connection�
_unwatch_name) �cls�
connection�name�flagsZ
name_appearedZ
name_vanishedZname_appeared_closureZname_vanished_closure�registration_idr
r
r �
watch_name0 s0 ����zGLibMonitoring.watch_namec C s |\}}||g|�R � dS )zCallback for watch_name..Nr
)r r r Z
name_ownerr �callback�
callback_argsr
r
r r Q s z&GLibMonitoring._name_appeared_callbackc C s |\}}||� dS )zCallback for watch_name.Nr
)r r r r r r r
r
r r Z s z&GLibMonitoring._name_vanished_callbackc C s t �|� dS )z5Stops watching a service name on the DBus connection.N)r Zbus_unwatch_name)r r r r
r
r r c s zGLibMonitoring._unwatch_name)
r r
r r �classmethodr r r r r r
r
r
r r - s �
r c @ s� e Zd ZdZefdd�Zedd� �Zedd� �Zedd � �Z ed
d� �Z
dd
� Zdd� Zdd� Z
dd� Zdd� Zdd� Zdd� Zdd� Zdd� Zdd� Zd S )!r a4 Base class for DBus observers.
This class is recommended to use only to watch the availability
of a service on DBus. It doesn't provide any support for accessing
objects provided by the service.
Usage:
.. code-block:: python
# Create the observer and connect to its signals.
observer = DBusObserver(SystemBus, "org.freedesktop.NetworkManager")
def callback1(observer):
print("Service is available!")
def callback2(observer):
print("Service is unavailable!")
observer.service_available.connect(callback1)
observer.service_unavailable.connect(callback2)
# Connect to the service once it is available.
observer.connect_once_available()
# Disconnect the observer.
observer.disconnect()
c C s2 || _ || _d| _t� | _t� | _|| _g | _dS )z�Creates a DBus service observer.
:param message_bus: a message bus
:param service_name: a DBus name of a service
FN)�_message_bus�
_service_name�_is_service_availabler �_service_available�_service_unavailable�_monitoring�_subscriptions)�selfZmessage_bus�service_nameZ
monitoringr
r
r �__init__� s zDBusObserver.__init__c C s | j S )zReturns a DBus name.�r �r# r
r
r r$ � s zDBusObserver.service_namec C s | j S )zThe proxy can be accessed.)r r'