new_path->properties = g_hash_table_new_full ((GHashFunc)str_pair_hash,
str_pair_equal,
g_free,
- NULL);
+ g_free);
new_path->introspect_children_cb = introspect_children_cb;
new_path->introspect_children_data = introspect_children_data;
g_free (path->path);
g_string_chunk_free (path->chunks);
g_ptr_array_free (path->interfaces, TRUE);
- g_ptr_array_free (path->introspection, FALSE);
+ g_free(g_ptr_array_free (path->introspection, FALSE));
g_hash_table_destroy (path->methods);
g_hash_table_destroy (path->properties);
+ g_free (path);
}
static void *
droute_free (DRouteContext *cnx)
{
g_ptr_array_foreach (cnx->registered_paths, (GFunc) path_free, NULL);
+ g_ptr_array_free (cnx->registered_paths, TRUE);
g_free (cnx);
}
const void *data)
{
DRoutePath *new_path;
- gboolean registered;
new_path = path_new (cnx, path, FALSE, (void *)data, NULL, NULL, NULL);
itf = g_string_chunk_insert (path->chunks, name);
g_ptr_array_add (path->interfaces, itf);
- g_ptr_array_add (path->introspection, introspect);
+ g_ptr_array_add (path->introspection, (gpointer) introspect);
for (; methods != NULL && methods->name != NULL; methods++)
{
else
reply = (func) (bus, message, datum);
- if (!reply)
+ /* All D-Bus method calls must have a reply.
+ * If one is not provided presume that the caller has already
+ * sent one.
+ */
+ if (reply)
{
- /* All D-Bus method calls must have a reply.
- * If one is not provided presume that the call has a void
- * return and no error has occured.
- */
- reply = dbus_message_new_method_return (message);
+ dbus_connection_send (bus, reply, NULL);
+ dbus_message_unref (reply);
}
- dbus_connection_send (bus, reply, NULL);
- dbus_message_unref (reply);
result = DBUS_HANDLER_RESULT_HANDLED;
}
}
void
+droute_path_unregister (DRoutePath *path, DBusConnection *bus)
+{
+ dbus_connection_unregister_object_path (bus, path->path);
+}
+
+void
droute_context_register (DRouteContext *cnx, DBusConnection *bus)
{
g_ptr_array_foreach (cnx->registered_paths, (GFunc) droute_path_register,
}
void
+droute_context_unregister (DRouteContext *cnx, DBusConnection *bus)
+{
+ g_ptr_array_foreach (cnx->registered_paths, (GFunc) droute_path_unregister,
+ bus);
+}
+
+void
+droute_context_deregister (DRouteContext *cnx, DBusConnection *bus)
+{
+ g_ptr_array_foreach (cnx->registered_paths, (GFunc) droute_path_unregister,
+ bus);
+}
+
+void
droute_intercept_dbus (DBusConnection *bus)
{
dbus_connection_register_object_path (bus, DBUS_PATH_DBUS,
&droute_vtable, NULL);
}
+
+void
+droute_unintercept_dbus (DBusConnection *bus)
+{
+ dbus_connection_unregister_object_path (bus, DBUS_PATH_DBUS);
+}
+
/*END------------------------------------------------------------------------*/