gboolean g_dbus_unregister_interface(DBusConnection *connection, const char *path, const char *name) { struct generic_data *data = NULL; if (path == NULL) return FALSE; if (dbus_connection_get_object_path_data(connection, path, (void *) &data) == FALSE) return FALSE; if (data == NULL) return FALSE; if (remove_interface(data, name) == FALSE) return FALSE; g_free(data->introspect); data->introspect = NULL; object_path_unref(connection, path); return TRUE; }
gboolean g_dbus_register_interface(DBusConnection *connection, const char *path, const char *name, const GDBusMethodTable *methods, const GDBusSignalTable *signals, const GDBusPropertyTable *properties, void *user_data, GDBusDestroyFunction destroy) { struct generic_data *data; data = object_path_ref(connection, path); if (data == NULL) return FALSE; if (find_interface(data->interfaces, name)) { object_path_unref(connection, path); return FALSE; } add_interface(data, name, methods, signals, properties, user_data, destroy); g_free(data->introspect); data->introspect = NULL; return TRUE; }
gboolean register_dbus_interface(DBusConnection *connection, const char *path, const char *name, const GDBusMethodTable *methods, const GDBusSignalTable *signal, void *user_data, GDBusDestroyFunction destroy) { struct generic_data *data; data = object_path_ref(connection, path); if (data == NULL) return FALSE; LOG("register_dbus_interface: %p",data->conn); if (!add_interface(data, name, methods, signal, user_data, destroy)) { object_path_unref(connection, path); return FALSE; } return TRUE; }
gboolean unregister_dbus_interface(DBusConnection *connection, const char *path, const char *name) { struct generic_data *data = NULL; LOG("unregister_dbus_interface"); if (path == NULL) return FALSE; if (dbus_connection_get_object_path_data(connection, path, (void *) &data) == FALSE) return FALSE; if (data == NULL) return FALSE; if (remove_interface(data, name) == FALSE) return FALSE; object_path_unref(connection, data->path); return TRUE; }