xref: /openbmc/boost-dbus/test/export_sample.py (revision 85362594)
1*85362594SBenjamin Kietzman# Copyright (c) Benjamin Kietzman (github.com/bkietz)
2*85362594SBenjamin Kietzman#
3*85362594SBenjamin Kietzman# Distributed under the Boost Software License, Version 1.0. (See accompanying
4*85362594SBenjamin Kietzman# file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
5*85362594SBenjamin Kietzman
6*85362594SBenjamin Kietzmanimport dbus
7*85362594SBenjamin Kietzmanimport dbus.service
8*85362594SBenjamin Kietzmanfrom dbus.mainloop.glib import DBusGMainLoop
9*85362594SBenjamin Kietzmanfrom gobject import MainLoop
10*85362594SBenjamin Kietzman
11*85362594SBenjamin Kietzmanbus_name = 'com.example.Sample'
12*85362594SBenjamin Kietzman
13*85362594SBenjamin Kietzmanclass Example(dbus.service.Object):
14*85362594SBenjamin Kietzman  def __init__(self, connection, path):
15*85362594SBenjamin Kietzman    dbus.service.Object.__init__(self, connection, path)
16*85362594SBenjamin Kietzman    self._last_input = None
17*85362594SBenjamin Kietzman
18*85362594SBenjamin Kietzman  @dbus.service.method(bus_name+'.Iface', in_signature='v', out_signature='s')
19*85362594SBenjamin Kietzman  def StringifyVariant(self, var):
20*85362594SBenjamin Kietzman    self.LastInputChanged(var)      # emits the signal
21*85362594SBenjamin Kietzman    return str(var)
22*85362594SBenjamin Kietzman
23*85362594SBenjamin Kietzman  @dbus.service.signal(bus_name+'.Iface', signature='v')
24*85362594SBenjamin Kietzman  def LastInputChanged(self, var):
25*85362594SBenjamin Kietzman    # run just before the signal is actually emitted
26*85362594SBenjamin Kietzman    # just put "pass" if nothing should happen
27*85362594SBenjamin Kietzman    self._last_input = var
28*85362594SBenjamin Kietzman
29*85362594SBenjamin Kietzman  @dbus.service.method(bus_name+'.Iface', in_signature='', out_signature='v')
30*85362594SBenjamin Kietzman  def GetLastInput(self):
31*85362594SBenjamin Kietzman    return self._last_input
32*85362594SBenjamin Kietzman
33*85362594SBenjamin Kietzmanbus = dbus.SessionBus(mainloop=DBusGMainLoop())
34*85362594SBenjamin Kietzmanbus.request_name(bus_name)
35*85362594SBenjamin Kietzman
36*85362594SBenjamin Kietzmanexample = Example(bus, '/path/to/obj')
37*85362594SBenjamin Kietzman
38*85362594SBenjamin Kietzmanprint bus.get_name_owner(bus_name)
39*85362594SBenjamin KietzmanMainLoop().run()
40