函数
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
-
类型:
gboolean
TRUE
如果它是来自其他对等方的消息,FALSE
如果它是发送到其他对等方的消息。 user_data
-
类型:
gpointer
添加过滤时传递的用户数据。
该参数可以是 NULL
。数据由函数的调用者拥有。
返回值
类型: GDBusMessage
一个将被 g_object_unref()
释放的 GDBusMessage
或 NULL
以丢弃消息。被动过滤函数可以简单地返回传递的 message
对象。
函数的调用者拥有数据,并负责释放它。 |
返回值可以是 NULL 。 |