Top |
Convenience API for watching bus names.
A simple example for watching a name can be found in gdbus-example-watch-name.c
void (*GBusNameAppearedCallback) (GDBusConnection *connection
,const gchar *name
,const gchar *name_owner
,gpointer user_data
);
Invoked when the name being watched is known to have to have a owner.
connection |
The GDBusConnection the name is being watched on. |
|
name |
The name being watched. |
|
name_owner |
Unique name of the owner of the name being watched. |
|
user_data |
User data passed to |
Since: 2.26
void (*GBusNameVanishedCallback) (GDBusConnection *connection
,const gchar *name
,gpointer user_data
);
Invoked when the name being watched is known not to have to have a owner.
This is also invoked when the GDBusConection on which the watch was
established has been closed. In that case, connection
will be
NULL
.
connection |
The GDBusConnection the name is being watched on, or
|
|
name |
The name being watched. |
|
user_data |
User data passed to |
Since: 2.26
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
);
Starts watching name
on the bus specified by bus_type
and calls
name_appeared_handler
and name_vanished_handler
when the name is
known to have a owner respectively known to lose its
owner. Callbacks will be invoked in the
thread-default main context
of the thread you are calling this function from.
You are guaranteed that one of the handlers will be invoked after
calling this function. When you are done watching the name, just
call g_bus_unwatch_name()
with the watcher id this function
returns.
If the name vanishes or appears (for example the application owning
the name could restart), the handlers are also invoked. If the
GDBusConnection that is used for watching the name disconnects, then
name_vanished_handler
is invoked since it is no longer
possible to access the name.
Another guarantee is that invocations of name_appeared_handler
and name_vanished_handler
are guaranteed to alternate; that
is, if name_appeared_handler
is invoked then you are
guaranteed that the next time one of the handlers is invoked, it
will be name_vanished_handler
. The reverse is also true.
This behavior makes it very simple to write applications that want
to take action when a certain name exists.
Basically, the application should create object proxies in
name_appeared_handler
and destroy them again (if any) in
name_vanished_handler
.
bus_type |
The type of bus to watch a name on. |
|
name |
The name (well-known or unique) to watch. |
|
flags |
Flags from the GBusNameWatcherFlags enumeration. |
|
name_appeared_handler |
Handler to invoke when |
[nullable] |
name_vanished_handler |
Handler to invoke when |
[nullable] |
user_data |
User data to pass to handlers. |
|
user_data_free_func |
Function for freeing |
[nullable] |
An identifier (never 0) that an be used with
g_bus_unwatch_name()
to stop watching the name.
Since: 2.26
guint g_bus_watch_name_on_connection (GDBusConnection *connection
,const gchar *name
,GBusNameWatcherFlags flags
,GBusNameAppearedCallback name_appeared_handler
,GBusNameVanishedCallback name_vanished_handler
,gpointer user_data
,GDestroyNotify user_data_free_func
);
Like g_bus_watch_name()
but takes a GDBusConnection instead of a
GBusType.
connection |
||
name |
The name (well-known or unique) to watch. |
|
flags |
Flags from the GBusNameWatcherFlags enumeration. |
|
name_appeared_handler |
Handler to invoke when |
[nullable] |
name_vanished_handler |
Handler to invoke when |
[nullable] |
user_data |
User data to pass to handlers. |
|
user_data_free_func |
Function for freeing |
[nullable] |
An identifier (never 0) that an be used with
g_bus_unwatch_name()
to stop watching the name.
Since: 2.26
void
g_bus_unwatch_name (guint watcher_id
);
Stops watching a name.
Since: 2.26
guint g_bus_watch_name_with_closures (GBusType bus_type
,const gchar *name
,GBusNameWatcherFlags flags
,GClosure *name_appeared_closure
,GClosure *name_vanished_closure
);
Version of g_bus_watch_name()
using closures instead of callbacks for
easier binding in other languages.
[rename-to g_bus_watch_name]
bus_type |
The type of bus to watch a name on. |
|
name |
The name (well-known or unique) to watch. |
|
flags |
Flags from the GBusNameWatcherFlags enumeration. |
|
name_appeared_closure |
[nullable] | |
name_vanished_closure |
[nullable] |
An identifier (never 0) that an be used with
g_bus_unwatch_name()
to stop watching the name.
Since: 2.26
guint g_bus_watch_name_on_connection_with_closures (GDBusConnection *connection
,const gchar *name
,GBusNameWatcherFlags flags
,GClosure *name_appeared_closure
,GClosure *name_vanished_closure
);
Version of g_bus_watch_name_on_connection()
using closures instead of callbacks for
easier binding in other languages.
[rename-to g_bus_watch_name_on_connection]
connection |
||
name |
The name (well-known or unique) to watch. |
|
flags |
Flags from the GBusNameWatcherFlags enumeration. |
|
name_appeared_closure |
[nullable] | |
name_vanished_closure |
[nullable] |
An identifier (never 0) that an be used with
g_bus_unwatch_name()
to stop watching the name.
Since: 2.26