Function
GioDBusMessageFilterFunction
since: 2.26
Declaration
GDBusMessage*
(* GDBusMessageFilterFunction) (
GDBusConnection* connection,
GDBusMessage* message,
gboolean incoming,
gpointer user_data
)
Description [src]
Signature for function used in g_dbus_connection_add_filter().
A filter function is passed a GDBusMessage
and expected to return
a GDBusMessage
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 set
g_object_unref (message);
// modify @copy
return copy;
}
If the returned GDBusMessage
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 standard error. Applications can
check this ahead of time using g_dbus_message_to_blob()
passing a
GDBusCapabilityFlags
value obtained from connection
.
Available since: 2.26
Parameters
connection
-
Type:
GDBusConnection
A
GDBusConnection
.The data is owned by the caller of the function. message
-
Type:
GDBusMessage
A locked
GDBusMessage
that the filter function takes ownership of.The called function takes ownership of the data, and is responsible for freeing it. incoming
-
Type:
gboolean
TRUE
if it is a message received from the other peer,FALSE
if it is a message to be sent to the other peer. user_data
-
Type:
gpointer
User data passed when adding the filter.
The argument can be NULL
.The data is owned by the caller of the function.
Return value
Type: GDBusMessage
A GDBusMessage
that will be freed with
g_object_unref()
or NULL
to drop the message. Passive filter
functions can simply return the passed message
object.
The caller of the function takes ownership of the data, and is responsible for freeing it. |
The return value can be NULL . |