summaryrefslogtreecommitdiff
path: root/python/dbus_bindings.pyx.in
diff options
context:
space:
mode:
Diffstat (limited to 'python/dbus_bindings.pyx.in')
-rw-r--r--python/dbus_bindings.pyx.in50
1 files changed, 29 insertions, 21 deletions
diff --git a/python/dbus_bindings.pyx.in b/python/dbus_bindings.pyx.in
index 8feb8678..4ae056c5 100644
--- a/python/dbus_bindings.pyx.in
+++ b/python/dbus_bindings.pyx.in
@@ -65,7 +65,7 @@ cdef void cunregister_function_handler (DBusConnection *connection,
void *user_data):
tup = <object>user_data
assert (type(tup) == list)
- function = tup[0]
+ function = tup[1]
args = [Connection(_conn=<object>connection)]
function(*args)
@@ -74,7 +74,7 @@ cdef DBusHandlerResult cmessage_function_handler (DBusConnection *connection,
void *user_data):
tup = <object>user_data
assert (type(tup) == list)
- function = tup[1]
+ function = tup[0]
message = Message(_create=0)
message._set_msg(<object>msg)
args = [Connection(_conn=<object>connection),
@@ -84,20 +84,6 @@ cdef DBusHandlerResult cmessage_function_handler (DBusConnection *connection,
retval = DBUS_HANDLER_RESULT_HANDLED
return retval
-cdef DBusHandlerResult chandle_message_function_handler (DBusConnection *connection,
- DBusMessage *msg,
- void *user_data):
- function = <object>user_data
- assert (type(function) == function)
- messagein = Message(_create=0)
- messagein._set_msg(<object>msg)
- args = [Connection(_conn=<object>connection),
- messagein]
- retval = function(*args)
- if (retval == None):
- retval = DBUS_HANDLER_RESULT_HANDLED
- return retval
-
cdef class Connection:
cdef DBusConnection *conn
@@ -258,10 +244,14 @@ cdef class Connection:
# FIXME: set_dispatch_status_function, get_unix_user, set_unix_user_function
- def add_filter(self, function):
+ def add_filter(self, filter_function):
+ user_data = [ filter_function ]
+ global _user_data_references
+ _user_data_references.append(user_data)
+
return dbus_connection_add_filter(self.conn,
- chandle_message_function_handler,
- <void*>function,
+ cmessage_function_handler,
+ <void*>user_data,
NULL)
@@ -298,7 +288,7 @@ cdef class Connection:
cvtable.unregister_function = cunregister_function_handler
cvtable.message_function = cmessage_function_handler
- user_data = [unregister_cb, message_cb]
+ user_data = [message_cb, unregister_cb]
global _user_data_references
_user_data_references.append(user_data)
@@ -314,7 +304,7 @@ cdef class Connection:
cvtable.unregister_function = cunregister_function_handler
cvtable.message_function = cmessage_function_handler
- user_data = [unregister_cb, message_cb]
+ user_data = [message_cb, unregister_cb]
global _user_data_references
_user_data_references.append(user_data)
@@ -906,4 +896,22 @@ def bus_service_exists(connection, service_name):
raise DBusException, error.message
return retval
+def bus_add_match(connection, rule):
+ cdef DBusError error
+ dbus_error_init(&error)
+
+ conn = connection._get_conn()
+ dbus_bus_add_match (<DBusConnection*>conn, rule, &error)
+
+ if dbus_error_is_set(&error):
+ raise DBusException, error.message
+
+def bus_remove_match(connection, rule):
+ cdef DBusError error
+ dbus_error_init(&error)
+ conn = connection._get_conn()
+ dbus_bus_remove_match (<DBusConnection*>conn, rule, &error)
+
+ if dbus_error_is_set(&error):
+ raise DBusException, error.message