3 uAc@sdZddlmZddlZddlZddlmZddlmZ ddl m Z d d d gZ da d d Zeadd ZddZddZdadaddZGdd d ejjZGdd d eeejjZdS)zMThis module contains convenience functions for using dbus-activated services.)absolute_importN)with_metaclass)_glib)polkitObject InterfaceType set_mainloopcCs tjdS)N) __mainloop__quitr r /usr/lib/python3.6/service.py__glib_quit_cb__)srcCs|adS)N)r )Zmainloopr r rr 4scCs|adS)N) __quit_cb__)quit_cbr r r set_quit_cb9srcCs tdS)N)rr r r rr>srZ__slip_dbus_service_sender____slip_dbus_service_reply_cb____slip_dbus_service_error_cb__csjdk rjdntdjdk r4jdntd fdd}xLddtDD]6}|dkr|_ql|dkr|_qlt||t|qlWj|_|S) NFTcsj }|dk rVddr4 =rLd=d=j|t dtdd|dk rr fdd}fdd}tj|||d n f}j|SdS) NrrZ_slip_polkit_auth_requireddefault_polkit_auth_requiredcs|rrfqd}yf}Wn&tk rX}z |}WYdd}~XnX|rh|q|dkrxq|ntjjdS)N) ExceptionrZNotAuthorizedExceptiontimeout_restart)Zis_autherrorresulte) action_iderror_cbkmethodmethod_is_asyncpreply_cbselfr r reply_handlerqs  z:wrap_method..wrapped_method..reply_handlercs|jdS)N)r)r)rr"r r error_handlersz:wrap_method..wrapped_method..error_handler)r#r$)get sender_seengetattrrZIsSystemBusNameAuthorizedAsyncr)r"r rsenderr#r$Zretval)async_callbackshide_async_callbackshide_sender_keywordrrsender_keyword)rrrr r!r"rwrapped_method[s,       " z#wrap_method..wrapped_methodcss"|]}|dddkr|VqdS)NZ_dbus_r ).0xr r r szwrap_method.._dbus_sender_keyword_dbus_async_callbacks)r2SENDER_KEYWORDr3ASYNC_CALLBACKSdirsetattrr'__name__)rr-attrr )r)r*r+rrr,r wrap_methodHs(  Er:cseZdZfddZZS)r csDx,|jD] \}}t|ddr t|||<q Wtt|j||||S)NZ_dbus_is_methodF)itemsr'r:superr __new__)clsnamebasesZdctZattrnamer9) __class__r rr=s zInterfaceType.__new__)r8 __module__ __qualname__r= __classcell__r r )rArr scsbeZdZdZdZeZdZeZiZ iZ dZ dfdd Z ddZ dd Zdd d Zd d ZZS)rFNcs2tt|j||||dkr(|jj|_n||_dS)N)r<r__init__rA persistent)r"connZ object_pathZbus_namerG)rAr rrFs zObject.__init__cCs2|j r ttjdkr tdSdt_|jt_dS)NrF)rGlenrsendersrcurrent_sourcedefault_durationduration)r"r r r _timeout_cbs zObject._timeout_cbcCs|j}| r||ftjkrtjj||ftj|j|ttj|dkrjtj|jtj|=tj|=|j rttjdkrtjdkrt dS)Nr) connectionrrJremoveconnections_sendersrIconnections_smobjsrGrKr)r"r?Z old_ownerZ new_ownerrHr r r_name_owner_changeds zObject._name_owner_changedcCsf|s |jj}tj s|tjkr$|t_|j s:ttjdkrbtjrLtj tjtj tjd|j t_dS)Nri) rArLrrMrGrIrJrKGLibZ source_removeZ timeout_addrN)r"rMr r rrs  zObject.timeout_restartcCsp||jftjkrltjj||jf|jtjkrZttj|j<|jj|jdd|dtj|j<tj|jj|dS)NZNameOwnerChangedzorg.freedesktop.DBus)Zhandler_functionZ signal_nameZdbus_interfaceZarg1) rOrrJaddrQsetZadd_signal_receiverrSrR)r"r(r r rr&s zObject.sender_seen)NNNN)N)r8rBrCrGrLrMrKrVrJrQrRrrFrNrSrr&rDr r )rArrs  )rr)__doc__Z __future__rZdbusZ dbus.serviceZsixrZ _wrappersrrTr__all__r rrr rrr4r5r:Zservicer rr r r rs&     g