函数
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。