Add wrapper for DBusServer.
[dbus-python-phuang.git] / examples / example-server.py
blob16684262e7a2c91c1758d01d0a4562c4f7d597c3
1 #!/usr/bin/env python
2 import dbus
3 import dbus.server
4 import dbus.lowlevel
5 import dbus.service
6 import dbus.mainloop.glib
7 import sys
8 import gobject
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):
15 print 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):
20 reply_cb ("Exit")
21 sys.exit ()
24 class ExampleServer (dbus.server.Server):
25 def __init__ (self):
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 ()
47 print "\t Arguments:"
48 i = 0
49 for arg in message.get_args_list():
50 print "\t\t Arg[%d] : %s" % (i, arg)
51 i = i + 1
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 ()
60 loop.run ()