方法

GioDBusConnectionadd_filter

自:2.26

声明 [src]

guint
g_dbus_connection_add_filter (
  GDBusConnection* connection,
  GDBusMessageFilterFunction filter_function,
  gpointer user_data,
  GDestroyNotify user_data_free_func
)

描述 [src]

添加信息过滤器。过滤器是先于标准分发执行的处理程序,用于所有传入和传出的消息。过滤器的执行顺序是它们被添加的顺序。相同的处理程序可以作为过滤器添加多次,在这种情况下,它将执行多次。在过滤器回调期间添加的过滤器不会在处理的消息上运行。过滤器函数允许修改甚至删除消息。

请注意,过滤器在专用消息处理线程中运行,因此它们不能阻塞,通常只能向工作线程发送信号。另外,请注意,过滤器很少需要 - 使用类似于 g_dbus_connection_send_message_with_reply()、g_dbus_connection_signal_subscribe() 或 g_dbus_connection_call() 的 API instead。

如果过滤器消耗了传入的消息,则消息不会被分发给任何其他地方 - 甚至连依赖于类似 g_dbus_connection_signal_subscribe() 和 g_dbus_connection_send_message_with_reply() 的标准分发机制也不会看到该消息。同样,如果过滤器消耗了传出的消息,则消息将不会发送给对端。

如果user_data_free_func非空,则将在user_data不再需要时(在你从线程中调用此方法的主线程默认上下文中)在某个时间点调用此函数。它在移除过滤器时不保证同步调用,且可能在connection被销毁后调用。

从版本:2.26可用

参数

filter_function

类型: GDBusMessageFilterFunction

过滤器函数。

user_data

类型: gpointer

传递给filter_function的用户数据。

参数可以是NULL
数据由方法调用者拥有。
user_data_free_func

类型: GDestroyNotify

在移除过滤器或为空时用于释放user_data的函数。

返回值

类型: guint

可用于与g_dbus_connection_remove_filter()一起使用的过滤器标识符。