6 import dbus
.mainloop
.glib
10 class ExampleObject (dbus
.service
.Object
):
11 SUPPORTS_MULTIPLE_CONNECTIONS
= True
13 @dbus.service
.method (dbus_interface
="org.freedesktop.ExampleObject", in_signature
="s", out_signature
="s")
14 def HelloWorld (self
, message
):
16 return "Reply : %s" % message
18 @dbus.service
.method (dbus_interface
="org.freedesktop.ExampleObject", out_signature
="s", async_callbacks
=("reply_cb", "error_cb"))
19 def Exit (self
, reply_cb
, error_cb
):
24 class ExampleServer (dbus
.server
.Server
):
26 dbus
.server
.Server
.__init
__ (self
, "unix:abstract=/tmp/example-server")
27 self
.register_object (ExampleObject (), "/org/freedesktop/ExampleObject")
29 def new_connection (self
, server
, connection
):
30 connection
.add_message_filter (self
.message_filter_cb
)
31 print "New connection"
33 def remove_connection (self
, connection
):
34 print "Remove connection"
36 def message_filter_cb (self
, connection
, message
):
37 if message
.is_signal (dbus
.LOCAL_IFACE
, "Disconnected"):
38 print "A connection was closed"
39 return dbus
.lowlevel
.HANDLER_RESULT_NOT_YET_HANDLED
41 print "Got a Message (%s) : " % message
.__class
__.__name
__
42 print "\t From: %s" % message
.get_sender ()
43 print "\t To: %s" % message
.get_destination ()
44 print "\t Interface: %s" % message
.get_interface ()
45 print "\t Path: %s" % message
.get_path ()
46 print "\t Member: %s" % message
.get_member ()
49 for arg
in message
.get_args_list():
50 print "\t\t Arg[%d] : %s" % (i
, arg
)
53 return dbus
.lowlevel
.HANDLER_RESULT_NOT_YET_HANDLED
55 if __name__
== "__main__":
56 dbus
.mainloop
.glib
.DBusGMainLoop (set_as_default
= True)
57 loop
= gobject
.MainLoop ()
58 bus
= ExampleServer ()
59 print "ADDRESS=\"%s\"" % bus
.get_address ()