1 /* 2 * This file is part of gtkD. 3 * 4 * gtkD is free software; you can redistribute it and/or modify 5 * it under the terms of the GNU Lesser General Public License 6 * as published by the Free Software Foundation; either version 3 7 * of the License, or (at your option) any later version, with 8 * some exceptions, please read the COPYING file. 9 * 10 * gtkD is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU Lesser General Public License for more details. 14 * 15 * You should have received a copy of the GNU Lesser General Public License 16 * along with gtkD; if not, write to the Free Software 17 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA 18 */ 19 20 // generated automatically - do not change 21 // find conversion definition on APILookup.txt 22 // implement new conversion functionalities on the wrap.utils pakage 23 24 /* 25 * Conversion parameters: 26 * inFile = GDBusObjectManagerClient.html 27 * outPack = gio 28 * outFile = DBusObjectManagerClient 29 * strct = GDBusObjectManagerClient 30 * realStrct= 31 * ctorStrct=GDBusObjectManager 32 * clss = DBusObjectManagerClient 33 * interf = 34 * class Code: Yes 35 * interface Code: No 36 * template for: 37 * extend = 38 * implements: 39 * - AsyncInitableIF 40 * - DBusObjectManagerIF 41 * - InitableIF 42 * prefixes: 43 * - g_dbus_object_manager_client_ 44 * omit structs: 45 * omit prefixes: 46 * omit code: 47 * - g_dbus_object_manager_client_new_finish 48 * - g_dbus_object_manager_client_new_for_bus_finish 49 * omit signals: 50 * imports: 51 * - glib.Str 52 * - glib.ErrorG 53 * - glib.GException 54 * - gio.AsyncResultIF 55 * - gio.Cancellable 56 * - gio.DBusConnection 57 * - gio.AsyncInitableT 58 * - gio.AsyncInitableIF 59 * - gio.DBusObjectManagerT 60 * - gio.DBusObjectManagerIF 61 * - gio.InitableT 62 * - gio.InitableIF 63 * structWrap: 64 * - GAsyncResult* -> AsyncResultIF 65 * - GCancellable* -> Cancellable 66 * - GDBusConnection* -> DBusConnection 67 * module aliases: 68 * local aliases: 69 * overrides: 70 */ 71 72 module gio.DBusObjectManagerClient; 73 74 public import gtkc.giotypes; 75 76 private import gtkc.gio; 77 private import glib.ConstructionException; 78 private import gobject.ObjectG; 79 80 private import gobject.Signals; 81 public import gtkc.gdktypes; 82 83 private import glib.Str; 84 private import glib.ErrorG; 85 private import glib.GException; 86 private import gio.AsyncResultIF; 87 private import gio.Cancellable; 88 private import gio.DBusConnection; 89 private import gio.AsyncInitableT; 90 private import gio.AsyncInitableIF; 91 private import gio.DBusObjectManagerT; 92 private import gio.DBusObjectManagerIF; 93 private import gio.InitableT; 94 private import gio.InitableIF; 95 96 97 98 private import gobject.ObjectG; 99 100 /** 101 * GDBusObjectManagerClient is used to create, monitor and delete object 102 * proxies for remote objects exported by a GDBusObjectManagerServer (or any 103 * code implementing the org.freedesktop.DBus.ObjectManager 104 * interface). 105 * 106 * Once an instance of this type has been created, you can connect to 107 * the "object-added" and 108 * "object-removed" signals and inspect the 109 * GDBusObjectProxy objects returned by 110 * g_dbus_object_manager_get_objects(). 111 * 112 * If the name for a GDBusObjectManagerClient is not owned by anyone at 113 * object construction time, the default behavior is to request the 114 * message bus to launch an owner for the name. This behavior can be 115 * disabled using the G_DBUS_OBJECT_MANAGER_CLIENT_FLAGS_DO_NOT_AUTO_START 116 * flag. It's also worth noting that this only works if the name of 117 * interest is activatable in the first place. E.g. in some cases it 118 * is not possible to launch an owner for the requested name. In this 119 * case, GDBusObjectManagerClient object construction still succeeds but 120 * there will be no object proxies 121 * (e.g. g_dbus_object_manager_get_objects() returns the empty list) and 122 * the "name-owner" property is NULL. 123 * 124 * The owner of the requested name can come and go (for example 125 * consider a system service being restarted) – GDBusObjectManagerClient 126 * handles this case too; simply connect to the "notify" 127 * signal to watch for changes on the "name-owner" 128 * property. When the name owner vanishes, the behavior is that 129 * "name-owner" is set to NULL (this includes 130 * emission of the "notify" signal) and then 131 * "object-removed" signals are synthesized 132 * for all currently existing object proxies. Since 133 * "name-owner" is NULL when this happens, you can 134 * use this information to disambiguate a synthesized signal from a 135 * genuine signal caused by object removal on the remote 136 * GDBusObjectManager. Similarly, when a new name owner appears, 137 * "object-added" signals are synthesized 138 * while "name-owner" is still NULL. Only when all 139 * object proxies have been added, the "name-owner" 140 * is set to the new name owner (this includes emission of the 141 * "notify" signal). Furthermore, you are guaranteed that 142 * "name-owner" will alternate between a name owner 143 * (e.g. :1.42) and NULL even in the case where 144 * the name of interest is atomically replaced 145 * 146 * Ultimately, GDBusObjectManagerClient is used to obtain GDBusProxy 147 * instances. All signals (including the 148 * org.freedesktop.DBus.Properties::PropertiesChanged 149 * signal) delivered to GDBusProxy instances are guaranteed to 150 * originate from the name owner. This guarantee along with the 151 * behavior described above, means that certain race conditions 152 * including the “half the proxy is from the old owner 153 * and the other half is from the new owner” problem 154 * cannot happen. 155 * 156 * To avoid having the application connect to signals on the returned 157 * GDBusObjectProxy and GDBusProxy objects, the 158 * "interface-added", 159 * "interface-removed", 160 * "g-properties-changed" and 161 * "g-signal" signals 162 * are also emitted on the GDBusObjectManagerClient instance managing these 163 * objects. The signals emitted are 164 * "interface-added", 165 * "interface-removed", 166 * "interface-proxy-properties-changed" and 167 * "interface-proxy-signal". 168 * 169 * Note that all callbacks and signals are emitted in the 170 * thread-default main loop 171 * that the GDBusObjectManagerClient object was constructed 172 * in. Additionally, the GDBusObjectProxy and GDBusProxy objects 173 * originating from the GDBusObjectManagerClient object will be created in 174 * the same context and, consequently, will deliver signals in the 175 * same main loop. 176 */ 177 public class DBusObjectManagerClient : ObjectG, AsyncInitableIF, DBusObjectManagerIF, InitableIF 178 { 179 180 /** the main Gtk struct */ 181 protected GDBusObjectManagerClient* gDBusObjectManagerClient; 182 183 184 public GDBusObjectManagerClient* getDBusObjectManagerClientStruct() 185 { 186 return gDBusObjectManagerClient; 187 } 188 189 190 /** the main Gtk struct as a void* */ 191 protected override void* getStruct() 192 { 193 return cast(void*)gDBusObjectManagerClient; 194 } 195 196 /** 197 * Sets our main struct and passes it to the parent class 198 */ 199 public this (GDBusObjectManagerClient* gDBusObjectManagerClient) 200 { 201 super(cast(GObject*)gDBusObjectManagerClient); 202 this.gDBusObjectManagerClient = gDBusObjectManagerClient; 203 } 204 205 protected override void setStruct(GObject* obj) 206 { 207 super.setStruct(obj); 208 gDBusObjectManagerClient = cast(GDBusObjectManagerClient*)obj; 209 } 210 211 // add the AsyncInitable capabilities 212 mixin AsyncInitableT!(GDBusObjectManagerClient); 213 214 // add the DBusObjectManager capabilities 215 mixin DBusObjectManagerT!(GDBusObjectManagerClient); 216 217 // add the Initable capabilities 218 mixin InitableT!(GDBusObjectManagerClient); 219 220 /** 221 * Finishes an operation started with g_dbus_object_manager_client_new(). 222 * Since 2.30 223 * Params: 224 * res = A GAsyncResult obtained from the GAsyncReadyCallback passed to g_dbus_object_manager_client_new(). 225 * Throws: GException on failure. 226 * Throws: ConstructionException GTK+ fails to create the object. 227 */ 228 public this (AsyncResultIF res, bool forBus = false) 229 { 230 // GDBusObjectManager * g_dbus_object_manager_client_new_finish (GAsyncResult *res, GError **error); 231 GError* err = null; 232 GDBusObjectManager* p; 233 234 if ( forBus ) 235 { 236 p = g_dbus_object_manager_client_new_for_bus_finish((res is null) ? null : res.getAsyncResultTStruct(), &err); 237 } 238 else 239 { 240 p = g_dbus_object_manager_client_new_finish((res is null) ? null : res.getAsyncResultTStruct(), &err); 241 } 242 243 if (err !is null) 244 { 245 throw new GException( new ErrorG(err) ); 246 } 247 248 if(p is null) 249 { 250 throw new ConstructionException("null returned by g_dbus_object_manager_client_new_finish((res is null) ? null : res.getAsyncResultTStruct(), &err)"); 251 } 252 this(cast(GDBusObjectManagerClient*) p); 253 } 254 255 /** 256 */ 257 int[string] connectedSignals; 258 259 void delegate(GDBusObjectProxy*, GDBusProxy*, GVariant*, GStrv, DBusObjectManagerClient)[] onInterfaceProxyPropertiesChangedListeners; 260 /** 261 * Emitted when one or more D-Bus properties on proxy changes. The 262 * local cache has already been updated when this signal fires. Note 263 * that both changed_properties and invalidated_properties are 264 * guaranteed to never be NULL (either may be empty though). 265 * This signal exists purely as a convenience to avoid having to 266 * connect signals to all interface proxies managed by manager. 267 * This signal is emitted in the 268 * thread-default main loop 269 * that manager was constructed in. 270 * Since 2.30 271 */ 272 void addOnInterfaceProxyPropertiesChanged(void delegate(GDBusObjectProxy*, GDBusProxy*, GVariant*, GStrv, DBusObjectManagerClient) dlg, ConnectFlags connectFlags=cast(ConnectFlags)0) 273 { 274 if ( !("interface-proxy-properties-changed" in connectedSignals) ) 275 { 276 Signals.connectData( 277 getStruct(), 278 "interface-proxy-properties-changed", 279 cast(GCallback)&callBackInterfaceProxyPropertiesChanged, 280 cast(void*)this, 281 null, 282 connectFlags); 283 connectedSignals["interface-proxy-properties-changed"] = 1; 284 } 285 onInterfaceProxyPropertiesChangedListeners ~= dlg; 286 } 287 extern(C) static void callBackInterfaceProxyPropertiesChanged(GDBusObjectManagerClient* managerStruct, GDBusObjectProxy* objectProxy, GDBusProxy* interfaceProxy, GVariant* changedProperties, GStrv invalidatedProperties, DBusObjectManagerClient _dBusObjectManagerClient) 288 { 289 foreach ( void delegate(GDBusObjectProxy*, GDBusProxy*, GVariant*, GStrv, DBusObjectManagerClient) dlg ; _dBusObjectManagerClient.onInterfaceProxyPropertiesChangedListeners ) 290 { 291 dlg(objectProxy, interfaceProxy, changedProperties, invalidatedProperties, _dBusObjectManagerClient); 292 } 293 } 294 295 void delegate(GDBusObjectProxy*, GDBusProxy*, string, string, GVariant*, DBusObjectManagerClient)[] onInterfaceProxySignalListeners; 296 /** 297 * Emitted when a D-Bus signal is received on interface_proxy. 298 * This signal exists purely as a convenience to avoid having to 299 * connect signals to all interface proxies managed by manager. 300 * This signal is emitted in the 301 * thread-default main loop 302 * that manager was constructed in. 303 * Since 2.30 304 */ 305 void addOnInterfaceProxySignal(void delegate(GDBusObjectProxy*, GDBusProxy*, string, string, GVariant*, DBusObjectManagerClient) dlg, ConnectFlags connectFlags=cast(ConnectFlags)0) 306 { 307 if ( !("interface-proxy-signal" in connectedSignals) ) 308 { 309 Signals.connectData( 310 getStruct(), 311 "interface-proxy-signal", 312 cast(GCallback)&callBackInterfaceProxySignal, 313 cast(void*)this, 314 null, 315 connectFlags); 316 connectedSignals["interface-proxy-signal"] = 1; 317 } 318 onInterfaceProxySignalListeners ~= dlg; 319 } 320 extern(C) static void callBackInterfaceProxySignal(GDBusObjectManagerClient* managerStruct, GDBusObjectProxy* objectProxy, GDBusProxy* interfaceProxy, gchar* senderName, gchar* signalName, GVariant* parameters, DBusObjectManagerClient _dBusObjectManagerClient) 321 { 322 foreach ( void delegate(GDBusObjectProxy*, GDBusProxy*, string, string, GVariant*, DBusObjectManagerClient) dlg ; _dBusObjectManagerClient.onInterfaceProxySignalListeners ) 323 { 324 dlg(objectProxy, interfaceProxy, Str.toString(senderName), Str.toString(signalName), parameters, _dBusObjectManagerClient); 325 } 326 } 327 328 329 /** 330 * Asynchronously creates a new GDBusObjectManagerClient object. 331 * This is an asynchronous failable constructor. When the result is 332 * ready, callback will be invoked in the 333 * thread-default main loop 334 * of the thread you are calling this method from. You can 335 * then call g_dbus_object_manager_client_new_finish() to get the result. See 336 * g_dbus_object_manager_client_new_sync() for the synchronous version. 337 * Since 2.30 338 * Params: 339 * connection = A GDBusConnection. 340 * flags = Zero or more flags from the GDBusObjectManagerClientFlags enumeration. 341 * name = The owner of the control object (unique or well-known name). 342 * objectPath = The object path of the control object. 343 * getProxyTypeFunc = A GDBusProxyTypeFunc function or NULL to always construct GDBusProxy proxies. [allow-none] 344 * getProxyTypeUserData = User data to pass to get_proxy_type_func. 345 * getProxyTypeDestroyNotify = Free function for get_proxy_type_user_data or NULL. [allow-none] 346 * cancellable = A GCancellable or NULL. [allow-none] 347 * callback = A GAsyncReadyCallback to call when the request is satisfied. 348 * userData = The data to pass to callback. 349 */ 350 public static void newDBusObjectManagerClient(DBusConnection connection, GDBusObjectManagerClientFlags flags, string name, string objectPath, GDBusProxyTypeFunc getProxyTypeFunc, void* getProxyTypeUserData, GDestroyNotify getProxyTypeDestroyNotify, Cancellable cancellable, GAsyncReadyCallback callback, void* userData) 351 { 352 // void g_dbus_object_manager_client_new (GDBusConnection *connection, GDBusObjectManagerClientFlags flags, const gchar *name, const gchar *object_path, GDBusProxyTypeFunc get_proxy_type_func, gpointer get_proxy_type_user_data, GDestroyNotify get_proxy_type_destroy_notify, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); 353 g_dbus_object_manager_client_new((connection is null) ? null : connection.getDBusConnectionStruct(), flags, Str.toStringz(name), Str.toStringz(objectPath), getProxyTypeFunc, getProxyTypeUserData, getProxyTypeDestroyNotify, (cancellable is null) ? null : cancellable.getCancellableStruct(), callback, userData); 354 } 355 356 /** 357 * Creates a new GDBusObjectManagerClient object. 358 * This is a synchronous failable constructor - the calling thread is 359 * blocked until a reply is received. See g_dbus_object_manager_client_new() 360 * for the asynchronous version. 361 * Since 2.30 362 * Params: 363 * connection = A GDBusConnection. 364 * flags = Zero or more flags from the GDBusObjectManagerClientFlags enumeration. 365 * name = The owner of the control object (unique or well-known name), or NULL when not using a message bus connection. [allow-none] 366 * objectPath = The object path of the control object. 367 * getProxyTypeFunc = A GDBusProxyTypeFunc function or NULL to always construct GDBusProxy proxies. [allow-none] 368 * getProxyTypeUserData = User data to pass to get_proxy_type_func. 369 * getProxyTypeDestroyNotify = Free function for get_proxy_type_user_data or NULL. [allow-none] 370 * cancellable = A GCancellable or NULL. [allow-none] 371 * Throws: GException on failure. 372 * Throws: ConstructionException GTK+ fails to create the object. 373 */ 374 public this (DBusConnection connection, GDBusObjectManagerClientFlags flags, string name, string objectPath, GDBusProxyTypeFunc getProxyTypeFunc, void* getProxyTypeUserData, GDestroyNotify getProxyTypeDestroyNotify, Cancellable cancellable) 375 { 376 // GDBusObjectManager * g_dbus_object_manager_client_new_sync (GDBusConnection *connection, GDBusObjectManagerClientFlags flags, const gchar *name, const gchar *object_path, GDBusProxyTypeFunc get_proxy_type_func, gpointer get_proxy_type_user_data, GDestroyNotify get_proxy_type_destroy_notify, GCancellable *cancellable, GError **error); 377 GError* err = null; 378 379 auto p = g_dbus_object_manager_client_new_sync((connection is null) ? null : connection.getDBusConnectionStruct(), flags, Str.toStringz(name), Str.toStringz(objectPath), getProxyTypeFunc, getProxyTypeUserData, getProxyTypeDestroyNotify, (cancellable is null) ? null : cancellable.getCancellableStruct(), &err); 380 381 if (err !is null) 382 { 383 throw new GException( new ErrorG(err) ); 384 } 385 386 if(p is null) 387 { 388 throw new ConstructionException("null returned by g_dbus_object_manager_client_new_sync((connection is null) ? null : connection.getDBusConnectionStruct(), flags, Str.toStringz(name), Str.toStringz(objectPath), getProxyTypeFunc, getProxyTypeUserData, getProxyTypeDestroyNotify, (cancellable is null) ? null : cancellable.getCancellableStruct(), &err)"); 389 } 390 this(cast(GDBusObjectManagerClient*) p); 391 } 392 393 /** 394 * Like g_dbus_object_manager_client_new() but takes a GBusType instead of a 395 * GDBusConnection. 396 * This is an asynchronous failable constructor. When the result is 397 * ready, callback will be invoked in the 398 * thread-default main loop 399 * of the thread you are calling this method from. You can 400 * then call g_dbus_object_manager_client_new_for_bus_finish() to get the result. See 401 * g_dbus_object_manager_client_new_for_bus_sync() for the synchronous version. 402 * Since 2.30 403 * Params: 404 * busType = A GBusType. 405 * flags = Zero or more flags from the GDBusObjectManagerClientFlags enumeration. 406 * name = The owner of the control object (unique or well-known name). 407 * objectPath = The object path of the control object. 408 * getProxyTypeFunc = A GDBusProxyTypeFunc function or NULL to always construct GDBusProxy proxies. [allow-none] 409 * getProxyTypeUserData = User data to pass to get_proxy_type_func. 410 * getProxyTypeDestroyNotify = Free function for get_proxy_type_user_data or NULL. [allow-none] 411 * cancellable = A GCancellable or NULL. [allow-none] 412 * callback = A GAsyncReadyCallback to call when the request is satisfied. 413 * userData = The data to pass to callback. 414 */ 415 public static void newForBus(GBusType busType, GDBusObjectManagerClientFlags flags, string name, string objectPath, GDBusProxyTypeFunc getProxyTypeFunc, void* getProxyTypeUserData, GDestroyNotify getProxyTypeDestroyNotify, Cancellable cancellable, GAsyncReadyCallback callback, void* userData) 416 { 417 // void g_dbus_object_manager_client_new_for_bus (GBusType bus_type, GDBusObjectManagerClientFlags flags, const gchar *name, const gchar *object_path, GDBusProxyTypeFunc get_proxy_type_func, gpointer get_proxy_type_user_data, GDestroyNotify get_proxy_type_destroy_notify, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data); 418 g_dbus_object_manager_client_new_for_bus(busType, flags, Str.toStringz(name), Str.toStringz(objectPath), getProxyTypeFunc, getProxyTypeUserData, getProxyTypeDestroyNotify, (cancellable is null) ? null : cancellable.getCancellableStruct(), callback, userData); 419 } 420 421 /** 422 * Like g_dbus_object_manager_client_new_sync() but takes a GBusType instead 423 * of a GDBusConnection. 424 * This is a synchronous failable constructor - the calling thread is 425 * blocked until a reply is received. See g_dbus_object_manager_client_new_for_bus() 426 * for the asynchronous version. 427 * Since 2.30 428 * Params: 429 * busType = A GBusType. 430 * flags = Zero or more flags from the GDBusObjectManagerClientFlags enumeration. 431 * name = The owner of the control object (unique or well-known name). 432 * objectPath = The object path of the control object. 433 * getProxyTypeFunc = A GDBusProxyTypeFunc function or NULL to always construct GDBusProxy proxies. [allow-none] 434 * getProxyTypeUserData = User data to pass to get_proxy_type_func. 435 * getProxyTypeDestroyNotify = Free function for get_proxy_type_user_data or NULL. [allow-none] 436 * cancellable = A GCancellable or NULL. [allow-none] 437 * Throws: GException on failure. 438 * Throws: ConstructionException GTK+ fails to create the object. 439 */ 440 public this (GBusType busType, GDBusObjectManagerClientFlags flags, string name, string objectPath, GDBusProxyTypeFunc getProxyTypeFunc, void* getProxyTypeUserData, GDestroyNotify getProxyTypeDestroyNotify, Cancellable cancellable) 441 { 442 // GDBusObjectManager * g_dbus_object_manager_client_new_for_bus_sync (GBusType bus_type, GDBusObjectManagerClientFlags flags, const gchar *name, const gchar *object_path, GDBusProxyTypeFunc get_proxy_type_func, gpointer get_proxy_type_user_data, GDestroyNotify get_proxy_type_destroy_notify, GCancellable *cancellable, GError **error); 443 GError* err = null; 444 445 auto p = g_dbus_object_manager_client_new_for_bus_sync(busType, flags, Str.toStringz(name), Str.toStringz(objectPath), getProxyTypeFunc, getProxyTypeUserData, getProxyTypeDestroyNotify, (cancellable is null) ? null : cancellable.getCancellableStruct(), &err); 446 447 if (err !is null) 448 { 449 throw new GException( new ErrorG(err) ); 450 } 451 452 if(p is null) 453 { 454 throw new ConstructionException("null returned by g_dbus_object_manager_client_new_for_bus_sync(busType, flags, Str.toStringz(name), Str.toStringz(objectPath), getProxyTypeFunc, getProxyTypeUserData, getProxyTypeDestroyNotify, (cancellable is null) ? null : cancellable.getCancellableStruct(), &err)"); 455 } 456 this(cast(GDBusObjectManagerClient*) p); 457 } 458 459 /** 460 * Gets the GDBusConnection used by manager. 461 * Since 2.30 462 * Returns: A GDBusConnection object. Do not free, the object belongs to manager. [transfer none] 463 */ 464 public DBusConnection getConnection() 465 { 466 // GDBusConnection * g_dbus_object_manager_client_get_connection (GDBusObjectManagerClient *manager); 467 auto p = g_dbus_object_manager_client_get_connection(gDBusObjectManagerClient); 468 469 if(p is null) 470 { 471 return null; 472 } 473 474 return ObjectG.getDObject!(DBusConnection)(cast(GDBusConnection*) p); 475 } 476 477 /** 478 * Gets the flags that manager was constructed with. 479 * Since 2.30 480 * Returns: Zero of more flags from the GDBusObjectManagerClientFlags enumeration. 481 */ 482 public GDBusObjectManagerClientFlags getFlags() 483 { 484 // GDBusObjectManagerClientFlags g_dbus_object_manager_client_get_flags (GDBusObjectManagerClient *manager); 485 return g_dbus_object_manager_client_get_flags(gDBusObjectManagerClient); 486 } 487 488 /** 489 * Gets the name that manager is for, or NULL if not a message bus 490 * connection. 491 * Since 2.30 492 * Returns: A unique or well-known name. Do not free, the string belongs to manager. 493 */ 494 public string getName() 495 { 496 // const gchar * g_dbus_object_manager_client_get_name (GDBusObjectManagerClient *manager); 497 return Str.toString(g_dbus_object_manager_client_get_name(gDBusObjectManagerClient)); 498 } 499 500 /** 501 * The unique name that owns the name that manager is for or NULL if 502 * no-one currently owns that name. You can connect to the 503 * "notify" signal to track changes to the 504 * "name-owner" property. 505 * Since 2.30 506 * Returns: The name owner or NULL if no name owner exists. Free with g_free(). 507 */ 508 public string getNameOwner() 509 { 510 // gchar * g_dbus_object_manager_client_get_name_owner (GDBusObjectManagerClient *manager); 511 return Str.toString(g_dbus_object_manager_client_get_name_owner(gDBusObjectManagerClient)); 512 } 513 }