✏️ 正在编辑: dbus_exporter.cpython-36.pyc
路径:
/lib/python3.6/site-packages/tuned/exports/__pycache__/dbus_exporter.cpython-36.pyc
提示:
您可以编辑任何文件(包括二进制文件),但请注意不当修改可能导致文件损坏。
3 �<�eO � @ s d dl mZ ddlZddlZddlZddlZddlZddlZ ddl jZddlZddl Z ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ dd lmZ ydd lmZ dd� ZW n ek r� dd lmZ Y nX e jj� Zdd� ZG dd� dej �Z!dS )� )� interfaces� N)�ismethod)�polkit)�GLib)�FunctionType)� DBusException)�ErrorMessage)�getfullargspecc C s t | �S )N)r )�func� r �#/usr/lib/python3.6/dbus_exporter.py� getargspec s r )r c C s� t |dd �}|d k rn0t |dd�dkr4d|jj }nd|j|jjf }t|t�rZ|j� }ndjtj |j|��}t |||�}|j� s�| j|� d S )NZ_dbus_error_name� __module__� �__main__zorg.freedesktop.DBus.Python.%sz!org.freedesktop.DBus.Python.%s.%s)r r ) �getattr� __class__�__name__r � isinstancer Zget_dbus_message�join� traceback�format_exception_onlyr Zget_no_replyZsend_message)Z connection�messageZ exception�name�contentsZreplyr r r �_method_reply_error$ s r c @ s� e Zd ZdZdd� Zedd� �Zedd� �Zedd � �Zd d� Z dd � Z dd� Zdd� Zdd� Z dd� Zdd� Zdd� Zdd� ZdS )�DBusExportera+ Export method calls through DBus Interface. We take a method to be exported and create a simple wrapper function to call it. This is required as we need the original function to be bound to the original object instance. While the wrapper will be bound to an object we dynamically construct. c C s� t j� tjkrttj_tjjj dd� d | _ d | _i | _t � | _|| _|| _|| _|| _d | _d | _t� | _tjtj�}tj� | _tjtj|� d S )NT)Zset_as_default)�logZgetEffectiveLevel�logging�DEBUGr �dbus�serviceZmainloopZglibZ DBusGMainLoop�_dbus_object_clsZ_dbus_object� _dbus_methods�set�_signals� _bus_name�_interface_name�_object_name� _namespace�_thread�_bus_objectr �_polkit�signal� getsignal�SIGINTr ZMainLoop� _main_loop)�self�bus_name�interface_name�object_name� namespaceZsignal_handlerr r r �__init__B s"