函数
Giobus_watch_name
自:2.26
声明 [src]
guint
g_bus_watch_name (
GBusType bus_type,
const gchar* name,
GBusNameWatcherFlags flags,
GBusNameAppearedCallback name_appeared_handler,
GBusNameVanishedCallback name_vanished_handler,
gpointer user_data,
GDestroyNotify user_data_free_func
)
说明 [src]
开始监视 name
在 bus_type
指定的总线上,当该名称已知有所有者时,分别调用 name_appeared_handler
和 name_vanished_handler
,已知失去了所有者。回调将在您调用此函数的线程的 [线程默认主上下文中][g-main-context-push-thread-default] 中调用。
可确保在调用此函数后将调用其中一个处理程序。当您不再监视名称时,只需使用此函数返回的观察者 ID 调用 g_bus_unwatch_name()
。
如果名称消失或出现(例如,拥有该名称的应用程序可能重新启动),也将调用处理程序。如果用于监视名称的 GDBusConnection
断开连接,则会调用 name_vanished_handler
,因为不再可以访问该名称。
另一个保证是,保证交替调用 name_appeared_handler
和 name_vanished_handler
;也就是说,如果调用了 name_appeared_handler
,那么您保证下次调用其中一个处理程序时,它将是 name_vanished_handler
。反之亦然。
此行为使得编写想要在某个 [名称存在][gdbus-watching-names] 时采取操作的应用程序变得非常简单。基本上,应用程序应在 name_appeared_handler
中创建对象代理,并在 name_vanished_handler
中销毁它们(如果有)。
从 2.26 起可用
此函数的实现由语言绑定中的 g_bus_watch_name_with_closures()
提供。
参数
bus_type
-
类型:
GBusType
监视名称所在总线的类型。
name
-
类型:
const gchar*
要监视的名称(众所周知或唯一)。
数据归函数的调用者所有。 值是 NUL 终止的 UTF-8 字符串。 flags
-
GBusNameWatcherFlags
枚举中的标志。 name_appeared_handler
-
当
name
已知存在时调用的处理程序,或为NULL
。实参可以为 NULL
。 name_vanished_handler
-
当
name
已知不存在时调用的处理程序,或为NULL
。实参可以为 NULL
。 user_data
-
类型:
gpointer
传递给处理程序的用户数据。
实参可以为 NULL
。数据归函数的调用者所有。 user_data_free_func
-
类型:
GDestroyNotify
释放
user_data
或NULL
的函数。实参可以为 NULL
。