Package ch.bailu.gtk.gio
Class DBusObjectManagerClient
java.lang.Object
ch.bailu.gtk.type.Type
ch.bailu.gtk.type.Pointer
ch.bailu.gtk.gobject.Object
ch.bailu.gtk.gio.DBusObjectManagerClient
- All Implemented Interfaces:
PointerInterface
#GDBusObjectManagerClient is used to create, monitor and delete object
proxies for remote objects exported by a #GDBusObjectManagerServer (or any
code implementing the
[org.freedesktop.DBus.ObjectManager](http://dbus.freedesktop.org/doc/dbus-specification.html#standard-interfaces-objectmanager)
interface).
Once an instance of this type has been created, you can connect to
the #GDBusObjectManager::object-added and
#GDBusObjectManager::object-removed signals and inspect the
#GDBusObjectProxy objects returned by
g_dbus_object_manager_get_objects().
If the name for a #GDBusObjectManagerClient is not owned by anyone at
object construction time, the default behavior is to request the
message bus to launch an owner for the name. This behavior can be
disabled using the %G_DBUS_OBJECT_MANAGER_CLIENT_FLAGS_DO_NOT_AUTO_START
flag. It's also worth noting that this only works if the name of
interest is activatable in the first place. E.g. in some cases it
is not possible to launch an owner for the requested name. In this
case, #GDBusObjectManagerClient object construction still succeeds but
there will be no object proxies
(e.g. g_dbus_object_manager_get_objects() returns the empty list) and
the #GDBusObjectManagerClient:name-owner property is %NULL.
The owner of the requested name can come and go (for example
consider a system service being restarted) – #GDBusObjectManagerClient
handles this case too; simply connect to the #GObject::notify
signal to watch for changes on the #GDBusObjectManagerClient:name-owner
property. When the name owner vanishes, the behavior is that
#GDBusObjectManagerClient:name-owner is set to %NULL (this includes
emission of the #GObject::notify signal) and then
#GDBusObjectManager::object-removed signals are synthesized
for all currently existing object proxies. Since
#GDBusObjectManagerClient:name-owner is %NULL when this happens, you can
use this information to disambiguate a synthesized signal from a
genuine signal caused by object removal on the remote
#GDBusObjectManager. Similarly, when a new name owner appears,
#GDBusObjectManager::object-added signals are synthesized
while #GDBusObjectManagerClient:name-owner is still %NULL. Only when all
object proxies have been added, the #GDBusObjectManagerClient:name-owner
is set to the new name owner (this includes emission of the
#GObject::notify signal). Furthermore, you are guaranteed that
#GDBusObjectManagerClient:name-owner will alternate between a name owner
(e.g. `:1.42`) and %NULL even in the case where
the name of interest is atomically replaced
Ultimately, #GDBusObjectManagerClient is used to obtain #GDBusProxy
instances. All signals (including the
org.freedesktop.DBus.Properties::PropertiesChanged signal)
delivered to #GDBusProxy instances are guaranteed to originate
from the name owner. This guarantee along with the behavior
described above, means that certain race conditions including the
"half the proxy is from the old owner and the other half is from
the new owner" problem cannot happen.
To avoid having the application connect to signals on the returned
#GDBusObjectProxy and #GDBusProxy objects, the
#GDBusObject::interface-added,
#GDBusObject::interface-removed,
#GDBusProxy::g-properties-changed and
#GDBusProxy::g-signal signals
are also emitted on the #GDBusObjectManagerClient instance managing these
objects. The signals emitted are
#GDBusObjectManager::interface-added,
#GDBusObjectManager::interface-removed,
#GDBusObjectManagerClient::interface-proxy-properties-changed and
#GDBusObjectManagerClient::interface-proxy-signal.
Note that all callbacks and signals are emitted in the
[thread-default main context][g-main-context-push-thread-default]
that the #GDBusObjectManagerClient object was constructed
in. Additionally, the #GDBusObjectProxy and #GDBusProxy objects
originating from the #GDBusObjectManagerClient object will be created in
the same context and, consequently, will deliver signals in the
same main loop.
proxies for remote objects exported by a #GDBusObjectManagerServer (or any
code implementing the
[org.freedesktop.DBus.ObjectManager](http://dbus.freedesktop.org/doc/dbus-specification.html#standard-interfaces-objectmanager)
interface).
Once an instance of this type has been created, you can connect to
the #GDBusObjectManager::object-added and
#GDBusObjectManager::object-removed signals and inspect the
#GDBusObjectProxy objects returned by
g_dbus_object_manager_get_objects().
If the name for a #GDBusObjectManagerClient is not owned by anyone at
object construction time, the default behavior is to request the
message bus to launch an owner for the name. This behavior can be
disabled using the %G_DBUS_OBJECT_MANAGER_CLIENT_FLAGS_DO_NOT_AUTO_START
flag. It's also worth noting that this only works if the name of
interest is activatable in the first place. E.g. in some cases it
is not possible to launch an owner for the requested name. In this
case, #GDBusObjectManagerClient object construction still succeeds but
there will be no object proxies
(e.g. g_dbus_object_manager_get_objects() returns the empty list) and
the #GDBusObjectManagerClient:name-owner property is %NULL.
The owner of the requested name can come and go (for example
consider a system service being restarted) – #GDBusObjectManagerClient
handles this case too; simply connect to the #GObject::notify
signal to watch for changes on the #GDBusObjectManagerClient:name-owner
property. When the name owner vanishes, the behavior is that
#GDBusObjectManagerClient:name-owner is set to %NULL (this includes
emission of the #GObject::notify signal) and then
#GDBusObjectManager::object-removed signals are synthesized
for all currently existing object proxies. Since
#GDBusObjectManagerClient:name-owner is %NULL when this happens, you can
use this information to disambiguate a synthesized signal from a
genuine signal caused by object removal on the remote
#GDBusObjectManager. Similarly, when a new name owner appears,
#GDBusObjectManager::object-added signals are synthesized
while #GDBusObjectManagerClient:name-owner is still %NULL. Only when all
object proxies have been added, the #GDBusObjectManagerClient:name-owner
is set to the new name owner (this includes emission of the
#GObject::notify signal). Furthermore, you are guaranteed that
#GDBusObjectManagerClient:name-owner will alternate between a name owner
(e.g. `:1.42`) and %NULL even in the case where
the name of interest is atomically replaced
Ultimately, #GDBusObjectManagerClient is used to obtain #GDBusProxy
instances. All signals (including the
org.freedesktop.DBus.Properties::PropertiesChanged signal)
delivered to #GDBusProxy instances are guaranteed to originate
from the name owner. This guarantee along with the behavior
described above, means that certain race conditions including the
"half the proxy is from the old owner and the other half is from
the new owner" problem cannot happen.
To avoid having the application connect to signals on the returned
#GDBusObjectProxy and #GDBusProxy objects, the
#GDBusObject::interface-added,
#GDBusObject::interface-removed,
#GDBusProxy::g-properties-changed and
#GDBusProxy::g-signal signals
are also emitted on the #GDBusObjectManagerClient instance managing these
objects. The signals emitted are
#GDBusObjectManager::interface-added,
#GDBusObjectManager::interface-removed,
#GDBusObjectManagerClient::interface-proxy-properties-changed and
#GDBusObjectManagerClient::interface-proxy-signal.
Note that all callbacks and signals are emitted in the
[thread-default main context][g-main-context-push-thread-default]
that the #GDBusObjectManagerClient object was constructed
in. Additionally, the #GDBusObjectProxy and #GDBusProxy objects
originating from the #GDBusObjectManagerClient object will be created in
the same context and, consequently, will deliver signals in the
same main loop.
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic interface
static interface
static interface
static interface
Nested classes/interfaces inherited from class ch.bailu.gtk.gobject.Object
Object.OnBindingTransformFunc, Object.OnDuplicateFunc, Object.OnNotify, Object.OnToggleNotify, Object.OnWeakNotify
-
Field Summary
Fields inherited from class ch.bailu.gtk.gobject.Object
SIGNAL_ON_NOTIFY
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionstatic void
_new
(DBusConnection connection, int flags, Str name, Str object_path, DBusObjectManagerClient.OnDBusProxyTypeFunc get_proxy_type_func, Pointer get_proxy_type_user_data, DBusObjectManagerClient.OnDestroyNotify get_proxy_type_destroy_notify, Cancellable cancellable, DBusObjectManagerClient.OnAsyncReadyCallback callback, Pointer user_data) Asynchronously creates a new #GDBusObjectManagerClient object.Implements interfaceAsyncInitable
.Implements interfaceDBusObjectManager
.Implements interfaceInitable
.static ClassHandler
Gets the #GDBusConnection used by @manager.int
getFlags()
Gets the flags that @manager was constructed with.static int
getName()
Gets the name that @manager is for, or %NULL if not a message bus
connection.The unique name that owns the name that @manager is for or %NULL if
no-one currently owns that name.static long
static TypeSystem.TypeSize
static long
static TypeSystem.TypeSize
static DBusObjectManagerClient
Finishes an operation started with g_dbus_object_manager_client_new().static void
newForBus
(int bus_type, int flags, Str name, Str object_path, DBusObjectManagerClient.OnDBusProxyTypeFunc get_proxy_type_func, Pointer get_proxy_type_user_data, DBusObjectManagerClient.OnDestroyNotify get_proxy_type_destroy_notify, Cancellable cancellable, DBusObjectManagerClient.OnAsyncReadyCallback callback, Pointer user_data) Like g_dbus_object_manager_client_new() but takes a #GBusType instead of a
#GDBusConnection.static DBusObjectManagerClient
Finishes an operation started with g_dbus_object_manager_client_new_for_bus().static DBusObjectManagerClient
newForBusSyncDBusObjectManagerClient
(int bus_type, int flags, Str name, Str object_path, DBusObjectManagerClient.OnDBusProxyTypeFunc get_proxy_type_func, Pointer get_proxy_type_user_data, DBusObjectManagerClient.OnDestroyNotify get_proxy_type_destroy_notify, Cancellable cancellable) Like g_dbus_object_manager_client_new_sync() but takes a #GBusType instead
of a #GDBusConnection.static DBusObjectManagerClient
newForBusSyncDBusObjectManagerClient
(int bus_type, int flags, String name, String object_path, DBusObjectManagerClient.OnDBusProxyTypeFunc get_proxy_type_func, Pointer get_proxy_type_user_data, DBusObjectManagerClient.OnDestroyNotify get_proxy_type_destroy_notify, Cancellable cancellable) Like g_dbus_object_manager_client_new_sync() but takes a #GBusType instead
of a #GDBusConnection.static DBusObjectManagerClient
newSyncDBusObjectManagerClient
(DBusConnection connection, int flags, Str name, Str object_path, DBusObjectManagerClient.OnDBusProxyTypeFunc get_proxy_type_func, Pointer get_proxy_type_user_data, DBusObjectManagerClient.OnDestroyNotify get_proxy_type_destroy_notify, Cancellable cancellable) Creates a new #GDBusObjectManagerClient object.static DBusObjectManagerClient
newSyncDBusObjectManagerClient
(DBusConnection connection, int flags, String name, String object_path, DBusObjectManagerClient.OnDBusProxyTypeFunc get_proxy_type_func, Pointer get_proxy_type_user_data, DBusObjectManagerClient.OnDestroyNotify get_proxy_type_destroy_notify, Cancellable cancellable) Creates a new #GDBusObjectManagerClient object.Connect to signal "interface-proxy-signal".Methods inherited from class ch.bailu.gtk.gobject.Object
addToggleRef, bindProperty, bindProperty, bindPropertyFull, bindPropertyFull, bindPropertyWithClosures, bindPropertyWithClosures, compatControl, connect, connect, disconnect, disconnect, dupData, dupData, dupQdata, forceFloating, freezeNotify, get, get, getData, getData, getProperty, getProperty, getQdata, interfaceFindProperty, interfaceInstallProperty, isFloating, notify, notify, notifyByPspec, onNotify, ref, refSink, removeToggleRef, replaceData, replaceData, replaceQdata, runDispose, set, set, setData, setData, setDataFull, setDataFull, setProperty, setProperty, setQdata, setQdataFull, stealData, stealData, stealQdata, takeRef, thawNotify, unref, watchClosure, weakRef, weakUnref
Methods inherited from class ch.bailu.gtk.type.Pointer
asCPointer, cast, connectSignal, disconnectSignals, disconnectSignals, equals, hashCode, throwIfNull, throwNullPointerException, toString, unregisterCallbacks, unregisterCallbacks
Methods inherited from class ch.bailu.gtk.type.Type
asCPointer, asCPointer, asCPointerNotNull, asJnaPointer, asJnaPointer, asPointer, asPointer, cast, cast, throwIfNull
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface ch.bailu.gtk.type.PointerInterface
asCPointerNotNull, asJnaPointer, asPointer, isNotNull, isNull
-
Field Details
-
SIGNAL_ON_INTERFACE_PROXY_SIGNAL
- See Also:
-
-
Constructor Details
-
DBusObjectManagerClient
-
-
Method Details
-
getClassHandler
-
newFinishDBusObjectManagerClient
public static DBusObjectManagerClient newFinishDBusObjectManagerClient(@Nonnull AsyncResult res) throws AllocationError Finishes an operation started with g_dbus_object_manager_client_new().- Parameters:
res
- A #GAsyncResult obtained from the #GAsyncReadyCallback passed to g_dbus_object_manager_client_new().- Returns:
- A #GDBusObjectManagerClient object or %NULL if @error is set. Free with g_object_unref().
- Throws:
AllocationError
-
newForBusFinishDBusObjectManagerClient
public static DBusObjectManagerClient newForBusFinishDBusObjectManagerClient(@Nonnull AsyncResult res) throws AllocationError Finishes an operation started with g_dbus_object_manager_client_new_for_bus().- Parameters:
res
- A #GAsyncResult obtained from the #GAsyncReadyCallback passed to g_dbus_object_manager_client_new_for_bus().- Returns:
- A #GDBusObjectManagerClient object or %NULL if @error is set. Free with g_object_unref().
- Throws:
AllocationError
-
newForBusSyncDBusObjectManagerClient
public static DBusObjectManagerClient newForBusSyncDBusObjectManagerClient(int bus_type, int flags, @Nonnull Str name, @Nonnull Str object_path, DBusObjectManagerClient.OnDBusProxyTypeFunc get_proxy_type_func, @Nullable Pointer get_proxy_type_user_data, DBusObjectManagerClient.OnDestroyNotify get_proxy_type_destroy_notify, @Nullable Cancellable cancellable) throws AllocationError Like g_dbus_object_manager_client_new_sync() but takes a #GBusType instead
of a #GDBusConnection.
This is a synchronous failable constructor - the calling thread is
blocked until a reply is received. See g_dbus_object_manager_client_new_for_bus()
for the asynchronous version.- Parameters:
bus_type
- A #GBusType.flags
- Zero or more flags from the #GDBusObjectManagerClientFlags enumeration.name
- The owner of the control object (unique or well-known name).object_path
- The object path of the control object.get_proxy_type_func
- A #GDBusProxyTypeFunc function or %NULL to always construct #GDBusProxy proxies.get_proxy_type_user_data
- User data to pass to @get_proxy_type_func.get_proxy_type_destroy_notify
- Free function for @get_proxy_type_user_data or %NULL.cancellable
- A #GCancellable or %NULL- Returns:
- A #GDBusObjectManagerClient object or %NULL if @error is set. Free with g_object_unref().
- Throws:
AllocationError
-
newForBusSyncDBusObjectManagerClient
public static DBusObjectManagerClient newForBusSyncDBusObjectManagerClient(int bus_type, int flags, String name, String object_path, DBusObjectManagerClient.OnDBusProxyTypeFunc get_proxy_type_func, @Nullable Pointer get_proxy_type_user_data, DBusObjectManagerClient.OnDestroyNotify get_proxy_type_destroy_notify, @Nullable Cancellable cancellable) throws AllocationError Like g_dbus_object_manager_client_new_sync() but takes a #GBusType instead
of a #GDBusConnection.
This is a synchronous failable constructor - the calling thread is
blocked until a reply is received. See g_dbus_object_manager_client_new_for_bus()
for the asynchronous version.- Parameters:
bus_type
- A #GBusType.flags
- Zero or more flags from the #GDBusObjectManagerClientFlags enumeration.name
- The owner of the control object (unique or well-known name).object_path
- The object path of the control object.get_proxy_type_func
- A #GDBusProxyTypeFunc function or %NULL to always construct #GDBusProxy proxies.get_proxy_type_user_data
- User data to pass to @get_proxy_type_func.get_proxy_type_destroy_notify
- Free function for @get_proxy_type_user_data or %NULL.cancellable
- A #GCancellable or %NULL- Returns:
- A #GDBusObjectManagerClient object or %NULL if @error is set. Free with g_object_unref().
- Throws:
AllocationError
-
newSyncDBusObjectManagerClient
public static DBusObjectManagerClient newSyncDBusObjectManagerClient(@Nonnull DBusConnection connection, int flags, @Nullable Str name, @Nonnull Str object_path, DBusObjectManagerClient.OnDBusProxyTypeFunc get_proxy_type_func, @Nullable Pointer get_proxy_type_user_data, DBusObjectManagerClient.OnDestroyNotify get_proxy_type_destroy_notify, @Nullable Cancellable cancellable) throws AllocationError Creates a new #GDBusObjectManagerClient object.
This is a synchronous failable constructor - the calling thread is
blocked until a reply is received. See g_dbus_object_manager_client_new()
for the asynchronous version.- Parameters:
connection
- A #GDBusConnection.flags
- Zero or more flags from the #GDBusObjectManagerClientFlags enumeration.name
- The owner of the control object (unique or well-known name), or %NULL when not using a message bus connection.object_path
- The object path of the control object.get_proxy_type_func
- A #GDBusProxyTypeFunc function or %NULL to always construct #GDBusProxy proxies.get_proxy_type_user_data
- User data to pass to @get_proxy_type_func.get_proxy_type_destroy_notify
- Free function for @get_proxy_type_user_data or %NULL.cancellable
- A #GCancellable or %NULL- Returns:
- A #GDBusObjectManagerClient object or %NULL if @error is set. Free with g_object_unref().
- Throws:
AllocationError
-
newSyncDBusObjectManagerClient
public static DBusObjectManagerClient newSyncDBusObjectManagerClient(@Nonnull DBusConnection connection, int flags, String name, String object_path, DBusObjectManagerClient.OnDBusProxyTypeFunc get_proxy_type_func, @Nullable Pointer get_proxy_type_user_data, DBusObjectManagerClient.OnDestroyNotify get_proxy_type_destroy_notify, @Nullable Cancellable cancellable) throws AllocationError Creates a new #GDBusObjectManagerClient object.
This is a synchronous failable constructor - the calling thread is
blocked until a reply is received. See g_dbus_object_manager_client_new()
for the asynchronous version.- Parameters:
connection
- A #GDBusConnection.flags
- Zero or more flags from the #GDBusObjectManagerClientFlags enumeration.name
- The owner of the control object (unique or well-known name), or %NULL when not using a message bus connection.object_path
- The object path of the control object.get_proxy_type_func
- A #GDBusProxyTypeFunc function or %NULL to always construct #GDBusProxy proxies.get_proxy_type_user_data
- User data to pass to @get_proxy_type_func.get_proxy_type_destroy_notify
- Free function for @get_proxy_type_user_data or %NULL.cancellable
- A #GCancellable or %NULL- Returns:
- A #GDBusObjectManagerClient object or %NULL if @error is set. Free with g_object_unref().
- Throws:
AllocationError
-
getConnection
Gets the #GDBusConnection used by @manager.- Returns:
- A #GDBusConnection object. Do not free, the object belongs to @manager.
-
getFlags
public int getFlags()Gets the flags that @manager was constructed with.- Returns:
- Zero of more flags from the #GDBusObjectManagerClientFlags enumeration.
-
getName
Gets the name that @manager is for, or %NULL if not a message bus
connection.- Returns:
- A unique or well-known name. Do not free, the string belongs to @manager.
-
getNameOwner
The unique name that owns the name that @manager is for or %NULL if
no-one currently owns that name. You can connect to the
#GObject::notify signal to track changes to the
#GDBusObjectManagerClient:name-owner property.- Returns:
- The name owner or %NULL if no name owner exists. Free with g_free().
-
onInterfaceProxySignal
Connect to signal "interface-proxy-signal".
SeeDBusObjectManagerClient.OnInterfaceProxySignal.onInterfaceProxySignal(ch.bailu.gtk.gio.DBusObjectProxy, ch.bailu.gtk.gio.DBusProxy, ch.bailu.gtk.type.Str, ch.bailu.gtk.type.Str, ch.bailu.gtk.glib.Variant)
for signal description.
FieldSIGNAL_ON_INTERFACE_PROXY_SIGNAL
contains original signal name and can be used as resource reference.- Parameters:
signal
- callback function (lambda).- Returns:
SignalHandler
. Can be used to disconnect signal and to release callback function.
-
_new
public static void _new(@Nonnull DBusConnection connection, int flags, @Nonnull Str name, @Nonnull Str object_path, DBusObjectManagerClient.OnDBusProxyTypeFunc get_proxy_type_func, @Nullable Pointer get_proxy_type_user_data, DBusObjectManagerClient.OnDestroyNotify get_proxy_type_destroy_notify, @Nullable Cancellable cancellable, DBusObjectManagerClient.OnAsyncReadyCallback callback, @Nullable Pointer user_data) Asynchronously creates a new #GDBusObjectManagerClient object.
This is an asynchronous failable constructor. When the result is
ready, @callback will be invoked in the
[thread-default main context][g-main-context-push-thread-default]
of the thread you are calling this method from. You can
then call g_dbus_object_manager_client_new_finish() to get the result. See
g_dbus_object_manager_client_new_sync() for the synchronous version.- Parameters:
connection
- A #GDBusConnection.flags
- Zero or more flags from the #GDBusObjectManagerClientFlags enumeration.name
- The owner of the control object (unique or well-known name).object_path
- The object path of the control object.get_proxy_type_func
- A #GDBusProxyTypeFunc function or %NULL to always construct #GDBusProxy proxies.get_proxy_type_user_data
- User data to pass to @get_proxy_type_func.get_proxy_type_destroy_notify
- Free function for @get_proxy_type_user_data or %NULL.cancellable
- A #GCancellable or %NULLcallback
- A #GAsyncReadyCallback to call when the request is satisfied.user_data
- The data to pass to @callback.
-
newForBus
public static void newForBus(int bus_type, int flags, @Nonnull Str name, @Nonnull Str object_path, DBusObjectManagerClient.OnDBusProxyTypeFunc get_proxy_type_func, @Nullable Pointer get_proxy_type_user_data, DBusObjectManagerClient.OnDestroyNotify get_proxy_type_destroy_notify, @Nullable Cancellable cancellable, DBusObjectManagerClient.OnAsyncReadyCallback callback, @Nullable Pointer user_data) Like g_dbus_object_manager_client_new() but takes a #GBusType instead of a
#GDBusConnection.
This is an asynchronous failable constructor. When the result is
ready, @callback will be invoked in the
[thread-default main loop][g-main-context-push-thread-default]
of the thread you are calling this method from. You can
then call g_dbus_object_manager_client_new_for_bus_finish() to get the result. See
g_dbus_object_manager_client_new_for_bus_sync() for the synchronous version.- Parameters:
bus_type
- A #GBusType.flags
- Zero or more flags from the #GDBusObjectManagerClientFlags enumeration.name
- The owner of the control object (unique or well-known name).object_path
- The object path of the control object.get_proxy_type_func
- A #GDBusProxyTypeFunc function or %NULL to always construct #GDBusProxy proxies.get_proxy_type_user_data
- User data to pass to @get_proxy_type_func.get_proxy_type_destroy_notify
- Free function for @get_proxy_type_user_data or %NULL.cancellable
- A #GCancellable or %NULLcallback
- A #GAsyncReadyCallback to call when the request is satisfied.user_data
- The data to pass to @callback.
-
asAsyncInitable
Implements interfaceAsyncInitable
. Call this to get access to interface functions.- Returns:
AsyncInitable
-
asDBusObjectManager
Implements interfaceDBusObjectManager
. Call this to get access to interface functions.- Returns:
DBusObjectManager
-
asInitable
Implements interfaceInitable
. Call this to get access to interface functions.- Returns:
Initable
-
getTypeID
public static long getTypeID() -
getParentTypeID
public static long getParentTypeID() -
getTypeSize
-
getParentTypeSize
-
getInstanceSize
public static int getInstanceSize()
-