函数
gioDBusMessageFilterFunction
自:2.26
声明
GDBusMessage*
(* GDBusMessageFilterFunction) (
GDBusConnection* connection,
GDBusMessage* message,
gboolean incoming,
gpointer user_data
)
描述 [源代码]
g_dbus_connection_add_filter() 中使用函数的签名。
过滤函数接收一个 GDBusMessage 并期望返回一个 GDBusMessage。不修改消息的被动过滤函数可以简单地返回 message 对象。
static GDBusMessage *
passive_filter (GDBusConnection *connection
GDBusMessage *message,
gboolean incoming,
gpointer user_data)
{
// inspect @message
return message;
}
想要丢弃消息的过滤函数可以简单地返回 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;
}
最后,过滤函数可以通过复制来修改消息。
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;
}
如果返回的 GDBusMessage 与 message 不同且不能在 connection 上发送(它可能使用不兼容 connection 的功能,如文件描述符),则会在标准错误中记录警告。应用程序可以使用 g_dbus_message_to_blob() 检查此内容,并传递从 connection 获取的 GDBusCapabilityFlags 值。
自:2.26
参数
connection-
类型:
GDBusConnection一个
GDBusConnection。数据由函数的调用者拥有。 message-
类型:
GDBusMessage一个锁定的
GDBusMessage,过滤函数将拥有这个对象。被调用的函数拥有数据,并负责释放它。 incoming-
类型:
gbooleanTRUE如果它是来自其他对等方的消息,FALSE如果它是发送到其他对等方的消息。 user_data-
类型:
gpointer添加过滤时传递的用户数据。
该参数可以是 NULL。数据由函数的调用者拥有。
返回值
类型: GDBusMessage
一个将被 g_object_unref() 释放的 GDBusMessage 或 NULL 以丢弃消息。被动过滤函数可以简单地返回传递的 message 对象。
| 函数的调用者拥有数据,并负责释放它。 |
返回值可以是 NULL。 |