[telepathy-python/master] Observer example

Danielle Madeley danielle at madeley.id.au
Sun Nov 8 15:20:29 PST 2009


---
 examples/observer.py |   60 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 60 insertions(+), 0 deletions(-)
 create mode 100644 examples/observer.py

diff --git a/examples/observer.py b/examples/observer.py
new file mode 100644
index 0000000..6c3c3a6
--- /dev/null
+++ b/examples/observer.py
@@ -0,0 +1,60 @@
+import dbus.glib
+import gobject
+
+import telepathy
+from telepathy.interfaces import CLIENT, \
+                                 CLIENT_OBSERVER, \
+                                 CHANNEL
+
+class ExampleObserver(telepathy.server.ClientObserver,
+                      telepathy.server.DBusProperties):
+    properties = {
+        CLIENT: {
+            'Interfaces': [ CLIENT_OBSERVER ],
+        },
+        CLIENT_OBSERVER: {
+            'ObserverChannelFilter': dbus.Array([
+                    dbus.Dictionary({
+                    }, signature='sv')
+                ], signature='a{sv}')
+        },
+    }
+
+    def __init__(self, client_name):
+        bus_name = '.'.join ([CLIENT, client_name])
+        object_path = '/' + bus_name.replace('.', '/')
+
+        bus_name = dbus.service.BusName(bus_name, bus=dbus.SessionBus())
+        telepathy.server.ClientObserver.__init__(self, bus_name, object_path)
+
+    def GetAll(self, interface):
+        print "GetAll", interface
+        if interface in self.properties:
+            return self.properties[interface]
+        else:
+            return {}
+
+    def Get(self, interface, property):
+        print "Get", interface, property
+        if interface in self.properties and \
+           property in self.properties[interface]:
+            return self.properties[interface][property]
+        else:
+            return 0
+
+    def ObserveChannels(self, account, connection, channels, dispatch_operation,
+                        requests_satisfied, observer_info):
+
+        print "Incoming channels on %s:" % (connection)
+        for object, props in channels:
+            print " - %s :: %s" % (props[CHANNEL + '.ChannelType'],
+                                   props[CHANNEL + '.TargetID'])
+
+def start():
+    ExampleObserver("ExampleObserver")
+    return False
+
+if __name__ == '__main__':
+    gobject.timeout_add(0, start)
+    loop = gobject.MainLoop()
+    loop.run()
-- 
1.5.6.5




More information about the telepathy-commits mailing list