方法
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
的函数。