Gio.DBusMessageFilterFunction
function onDBusMessageFilterFunction(connection: Gio.DBusConnection, message: Gio.DBusMessage, incoming: Boolean): Gio.DBusMessage { }
Signature for function used in Gio.DBusConnection.prototype.add_filter.
A filter function is passed a Gio.DBusMessage and expected to return a Gio.DBusMessage too. Passive filter functions that don't modify the message can simply return the message object: |[ static GDBusMessage * passive_filter (GDBusConnection *connection GDBusMessage *message, gboolean incoming, gpointer user_data) { /<!-- -->* inspect message *<!-- -->/ return message; } ]| Filter functions that wants to drop a message can simply return null: |[ static GDBusMessage * drop_filter (GDBusConnection *connection GDBusMessage *message, gboolean incoming, gpointer user_data) { if (should_drop_message) { g_object_unref (message); message = NULL; } return message; } ]| Finally, a filter function may modify a message by copying it: |[ static GDBusMessage * modifying_filter (GDBusConnection *connection GDBusMessage *message, gboolean incoming, gpointer user_data) { GDBusMessage *copy; GError *error;
error = NULL; copy = g_dbus_message_copy (message, &error); /<!-- -->* handle @error being is set *<!-- -->/ g_object_unref (message);
/<!-- -->* modify @copy *<!-- -->/
return copy; } ]| If the returned Gio.DBusMessage is different from message and cannot be sent on connection (it could use features, such as file descriptors, not compatible with connection), then a warning is logged to <emphasis>standard error</emphasis>. Applications can check this ahead of time using Gio.DBusMessage.prototype.to_blob passing a Gio.DBusCapabilityFlags value obtained from connection.
Since 2.26
- connection
- message
A locked Gio.DBusMessage that the filter function takes ownership of.
- incoming
true if it is a message received from the other peer, false if it is a message to be sent to the other peer.
- Returns
A Gio.DBusMessage that will be freed with GObject.Object.prototype.unref or null to drop the message. Passive filter functions can simply return the passed message object.