JFIF$        dd7 

Viewing File: /usr/lib/python3.9/site-packages/tuned/exports/__pycache__/dbus_exporter.cpython-39.pyc

a

���h��@sddlmZddlZddlZddlZddlZddlZddlZ	ddl
mZddlZddl
Z
ddlmZddlmZddlmZddlmZddlmZdd	lmZzdd
lmZdd�ZWney�dd
lmZYn0e	j��Zdd�ZGdd�dej �Z!dS)�)�
interfaces�N)�ismethod)�polkit)�GLib)�FunctionType)�
DBusException)�ErrorMessage��getfullargspeccCst|�S�Nr
)�func�r�?/usr/lib/python3.9/site-packages/tuned/exports/dbus_exporter.py�
getargspecsr)rcCs�t|dd�}|durn0t|dd�dvr4d|jj}nd|j|jjf}t|t�rZ|��}nd�t�	|j|��}t
|||�}|��s�|�|�dS)NZ_dbus_error_name�
__module__�)r�__main__zorg.freedesktop.DBus.Python.%sz!org.freedesktop.DBus.Python.%s.%s)
�getattr�	__class__�__name__r�
isinstancerZget_dbus_message�join�	traceback�format_exception_onlyr	Zget_no_replyZsend_message)Z
connection�message�	exception�name�contentsZreplyrrr�_method_reply_error$s

�rc@s�eZdZdZdd�Zedd��Zedd��Zedd	��Zd
d�Z	dd
�Z
dd�Zddd�Zdd�Z
dd�Zdd�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.
	cCs�t��tjkrttj_tjjj	dd�d|_
d|_i|_t
�|_||_||_||_||_d|_d|_t�|_t�tj�}t��|_t�tj|�dS)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�SIGINTrZMainLoop�
_main_loop)�self�bus_name�interface_name�object_name�	namespaceZsignal_handlerrrr�__init__Bs"
zDBusExporter.__init__cCs|jSr)r*�r5rrrr6`szDBusExporter.bus_namecCs|jSr)r+r;rrrr7dszDBusExporter.interface_namecCs|jSr)r,r;rrrr8hszDBusExporter.object_namecCs
|jduSr)r.r;rrr�runninglszDBusExporter.runningcCsNdj|jd�t|j�j�d�}t|dt|j�d�}t	|j
dt�|j�}|S)Nz2def {name}({args}):
					return wrapper({args})
		z, )r�argsz<decorator-gen-%d>�execr)�formatrrr�__func__r=�compile�lenr'r�	co_consts�locals)r5�method�wrapper�source�coder
rrr�_prepare_for_dbusos�zDBusExporter._prepare_for_dbuscGs|jd|}|d}t�d||f�|j�||�}|}|dkrVt�d||f�n�|dkrrt�d||f�n�|dkr�t�d	||f�t|dd��d
g}nZ|dkr�t�d||f�t|dd��d
g}n(t�d||f�t|dd��d
g}|S)
N�.���z?checking authorization for action '%s' requested by caller '%s'rzJaction '%s' requested by caller '%s' was successfully authorized by polkit�zepolkit error, but action '%s' requested by caller '%s' was successfully authorized by fallback methodrzLaction '%s' requested by caller '%s' wasn't authorized, ignoring the requestrzppolkit error and action '%s' requested by caller '%s' wasn't authorized by fallback method, ignoring the requestzvpolkit error and unable to use fallback method to authorize action '%s' requested by caller '%s', ignoring the request)	r-r!�debugr0Zcheck_authorizationZwarning�info�list�error)r5�action_namer=Z	action_id�caller�retZ	args_copyrrr�_polkit_auth}s$zDBusExporter._polkit_authNcstt��std���j}|�jvr(td���p.|����fdd�}���|�}tjj�j||dd�|�}|�j|<dS)N�#Only bound methods can be exported.�*Method with this name is already exported.cs��j�g|�R�i|��Sr)rT��ownerr=�kwargs�rQrEr5rr�auth_wrapper�sz)DBusExporter.export.<locals>.auth_wrapperrR)Zsender_keyword)	r�	Exceptionrr'rIr$r%rEr+)r5rEZin_signature�
out_signaturerQ�method_namer[rFrrZr�export�s
zDBusExporter.exportcsnt��std���j}||jvr(td���fdd�}|��|�}tj�|j|�|�}||j|<|j	�
|�dS)NrUrVcs�|i|��SrrrW�rErrrF�sz$DBusExporter.signal.<locals>.wrapper)rr\rr'rIr$r%r1r+r)�add)r5rEr]r^rFrr`rr1�s

zDBusExporter.signalcOshd}||jvs|jdurd}zt|j|�}WntyBd}Yn0|rVtd|��n||i|��dS)NFTzSignal '%s' doesn't exist.)r)r/r�AttributeErrorr\)r5r1r=rY�errrErrr�send_signal�s
zDBusExporter.send_signalcCs<|jdurtd��dt|�}t|tjjf|j�}||_dS)Nz%The exporter class was already build.zDBusExporter_%d)r&r\�id�typer$r%ZObjectr')r5Zunique_name�clsrrr�_construct_dbus_object_class�s

z)DBusExporter._construct_dbus_object_classcCsn|��rdS|jdur|��|��t��}tj�|j|�}|�||j	|�|_
tj|j
d�|_|j��dS)N)�target)r<r&rh�stopr$Z	SystemBusr%ZBusNamer*r,r/�	threading�Thread�_thread_coder.�start)r5Zbusr6rrrrn�s
zDBusExporter.startcCs2|jdur.|j��r.|j��|j��d|_dSr)r.�is_aliver4�quitrr;rrrrj�s

zDBusExporter.stopcCs|j��|`d|_dSr)r4�runr/r;rrrrm�s
zDBusExporter._thread_code)N)rr�__qualname__�__doc__r:�propertyr6r7r8r<rIrTr_r1rdrhrnrjrmrrrrr 8s$	




	
r )"rrZdbus.servicer$Zdbus.mainloop.glibZdbus.exceptionsrkr1Z
tuned.logsZtunedZtuned.constsZconstsrr"�inspectrZtuned.utils.polkitrZ
gi.repositoryr�typesrrZ
dbus.lowlevelr	rr�ImportErrorZlogs�getr!rZExporterInterfacer rrrr�<module>s.

Back to Directory  nL+D550H?Mx ,D"v]qv;6*Zqn)ZP0!1 A "#a$2Qr D8 a Ri[f\mIykIw0cuFcRı?lO7к_f˓[C$殷WF<_W ԣsKcëIzyQy/_LKℂ;C",pFA:/]=H  ~,ls/9ć:[=/#f;)x{ٛEQ )~ =𘙲r*2~ a _V=' kumFD}KYYC)({ *g&f`툪ry`=^cJ.I](*`wq1dđ#̩͑0;H]u搂@:~וKL Nsh}OIR*8:2 !lDJVo(3=M(zȰ+i*NAr6KnSl)!JJӁ* %݉?|D}d5:eP0R;{$X'xF@.ÊB {,WJuQɲRI;9QE琯62fT.DUJ;*cP A\ILNj!J۱+O\͔]ޒS߼Jȧc%ANolՎprULZԛerE2=XDXgVQeӓk yP7U*omQIs,K`)6\G3t?pgjrmۛجwluGtfh9uyP0D;Uڽ"OXlif$)&|ML0Zrm1[HXPlPR0'G=i2N+0e2]]9VTPO׮7h(F*癈'=QVZDF,d߬~TX G[`le69CR(!S2!P <0x<!1AQ "Raq02Br#SCTb ?Ζ"]mH5WR7k.ۛ!}Q~+yԏz|@T20S~Kek *zFf^2X*(@8r?CIuI|֓>^ExLgNUY+{.RѪ τV׸YTD I62'8Y27'\TP.6d&˦@Vqi|8-OΕ]ʔ U=TL8=;6c| !qfF3aů&~$l}'NWUs$Uk^SV:U# 6w++s&r+nڐ{@29 gL u"TÙM=6(^"7r}=6YݾlCuhquympǦ GjhsǜNlɻ}o7#S6aw4!OSrD57%|?x>L |/nD6?/8w#[)L7+6〼T ATg!%5MmZ/c-{1_Je"|^$'O&ޱմTrb$w)R$& N1EtdU3Uȉ1pM"N*(DNyd96.(jQ)X 5cQɎMyW?Q*!R>6=7)Xj5`J]e8%t!+'!1Q5 !1 AQaqё#2"0BRb?Gt^## .llQT $v,,m㵜5ubV =sY+@d{N! dnO<.-B;_wJt6;QJd.Qc%p{ 1,sNDdFHI0ГoXшe黅XۢF:)[FGXƹ/w_cMeD,ʡcc.WDtA$j@:) -# u c1<@ۗ9F)KJ-hpP]_x[qBlbpʖw q"LFGdƶ*s+ډ_Zc"?%t[IP 6J]#=ɺVvvCGsGh1 >)6|ey?Lӣm,4GWUi`]uJVoVDG< SB6ϏQ@ TiUlyOU0kfV~~}SZ@*WUUi##; s/[=!7}"WN]'(L! ~y5g9T̅JkbM' +s:S +B)v@Mj e Cf jE 0Y\QnzG1д~Wo{T9?`Rmyhsy3!HAD]mc1~2LSu7xT;j$`}4->L#vzŏILS ֭T{rjGKC;bpU=-`BsK.SFw4Mq]ZdHS0)tLg