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 module gio.DBusObjectManagerServer; 26 27 private import gio.DBusConnection; 28 private import gio.DBusObjectManagerIF; 29 private import gio.DBusObjectManagerT; 30 private import gio.DBusObjectSkeleton; 31 private import glib.ConstructionException; 32 private import glib.Str; 33 private import gobject.ObjectG; 34 private import gtkc.gio; 35 public import gtkc.giotypes; 36 37 38 /** 39 * #GDBusObjectManagerServer is used to export #GDBusObject instances using 40 * the standardized 41 * [org.freedesktop.DBus.ObjectManager](http://dbus.freedesktop.org/doc/dbus-specification.html#standard-interfaces-objectmanager) 42 * interface. For example, remote D-Bus clients can get all objects 43 * and properties in a single call. Additionally, any change in the 44 * object hierarchy is broadcast using signals. This means that D-Bus 45 * clients can keep caches up to date by only listening to D-Bus 46 * signals. 47 * 48 * See #GDBusObjectManagerClient for the client-side code that is 49 * intended to be used with #GDBusObjectManagerServer or any D-Bus 50 * object implementing the org.freedesktop.DBus.ObjectManager 51 * interface. 52 * 53 * Since: 2.30 54 */ 55 public class DBusObjectManagerServer : ObjectG, DBusObjectManagerIF 56 { 57 /** the main Gtk struct */ 58 protected GDBusObjectManagerServer* gDBusObjectManagerServer; 59 60 /** Get the main Gtk struct */ 61 public GDBusObjectManagerServer* getDBusObjectManagerServerStruct() 62 { 63 return gDBusObjectManagerServer; 64 } 65 66 /** the main Gtk struct as a void* */ 67 protected override void* getStruct() 68 { 69 return cast(void*)gDBusObjectManagerServer; 70 } 71 72 protected override void setStruct(GObject* obj) 73 { 74 gDBusObjectManagerServer = cast(GDBusObjectManagerServer*)obj; 75 super.setStruct(obj); 76 } 77 78 /** 79 * Sets our main struct and passes it to the parent class. 80 */ 81 public this (GDBusObjectManagerServer* gDBusObjectManagerServer, bool ownedRef = false) 82 { 83 this.gDBusObjectManagerServer = gDBusObjectManagerServer; 84 super(cast(GObject*)gDBusObjectManagerServer, ownedRef); 85 } 86 87 // add the DBusObjectManager capabilities 88 mixin DBusObjectManagerT!(GDBusObjectManagerServer); 89 90 /** 91 */ 92 93 public static GType getType() 94 { 95 return g_dbus_object_manager_server_get_type(); 96 } 97 98 /** 99 * Creates a new #GDBusObjectManagerServer object. 100 * 101 * The returned server isn't yet exported on any connection. To do so, 102 * use g_dbus_object_manager_server_set_connection(). Normally you 103 * want to export all of your objects before doing so to avoid <ulink 104 * url="http://dbus.freedesktop.org/doc/dbus-specification.html#standard-interfaces-objectmanager">InterfacesAdded</ulink> 105 * signals being emitted. 106 * 107 * Params: 108 * objectPath = The object path to export the manager object at. 109 * 110 * Return: A #GDBusObjectManagerServer object. Free with g_object_unref(). 111 * 112 * Since: 2.30 113 * 114 * Throws: ConstructionException GTK+ fails to create the object. 115 */ 116 public this(string objectPath) 117 { 118 auto p = g_dbus_object_manager_server_new(Str.toStringz(objectPath)); 119 120 if(p is null) 121 { 122 throw new ConstructionException("null returned by new"); 123 } 124 125 this(cast(GDBusObjectManagerServer*) p, true); 126 } 127 128 /** 129 * Exports @object on @manager. 130 * 131 * If there is already a #GDBusObject exported at the object path, 132 * then the old object is removed. 133 * 134 * The object path for @object must be in the hierarchy rooted by the 135 * object path for @manager. 136 * 137 * Note that @manager will take a reference on @object for as long as 138 * it is exported. 139 * 140 * Params: 141 * object = A #GDBusObjectSkeleton. 142 * 143 * Since: 2.30 144 */ 145 public void expor(DBusObjectSkeleton object) 146 { 147 g_dbus_object_manager_server_export(gDBusObjectManagerServer, (object is null) ? null : object.getDBusObjectSkeletonStruct()); 148 } 149 150 /** 151 * Like g_dbus_object_manager_server_export() but appends a string of 152 * the form _N (with N being a natural number) to @object's object path 153 * if an object with the given path already exists. As such, the 154 * #GDBusObjectProxy:g-object-path property of @object may be modified. 155 * 156 * Params: 157 * object = An object. 158 * 159 * Since: 2.30 160 */ 161 public void exportUniquely(DBusObjectSkeleton object) 162 { 163 g_dbus_object_manager_server_export_uniquely(gDBusObjectManagerServer, (object is null) ? null : object.getDBusObjectSkeletonStruct()); 164 } 165 166 /** 167 * Gets the #GDBusConnection used by @manager. 168 * 169 * Return: A #GDBusConnection object or %NULL if 170 * @manager isn't exported on a connection. The returned object should 171 * be freed with g_object_unref(). 172 * 173 * Since: 2.30 174 */ 175 public DBusConnection getConnection() 176 { 177 auto p = g_dbus_object_manager_server_get_connection(gDBusObjectManagerServer); 178 179 if(p is null) 180 { 181 return null; 182 } 183 184 return ObjectG.getDObject!(DBusConnection)(cast(GDBusConnection*) p, true); 185 } 186 187 /** 188 * Returns whether @object is currently exported on @manager. 189 * 190 * Params: 191 * object = An object. 192 * 193 * Return: %TRUE if @object is exported 194 * 195 * Since: 2.34 196 */ 197 public bool isExported(DBusObjectSkeleton object) 198 { 199 return g_dbus_object_manager_server_is_exported(gDBusObjectManagerServer, (object is null) ? null : object.getDBusObjectSkeletonStruct()) != 0; 200 } 201 202 /** 203 * Exports all objects managed by @manager on @connection. If 204 * @connection is %NULL, stops exporting objects. 205 * 206 * Params: 207 * connection = A #GDBusConnection or %NULL. 208 */ 209 public void setConnection(DBusConnection connection) 210 { 211 g_dbus_object_manager_server_set_connection(gDBusObjectManagerServer, (connection is null) ? null : connection.getDBusConnectionStruct()); 212 } 213 214 /** 215 * If @manager has an object at @path, removes the object. Otherwise 216 * does nothing. 217 * 218 * Note that @object_path must be in the hierarchy rooted by the 219 * object path for @manager. 220 * 221 * Params: 222 * objectPath = An object path. 223 * 224 * Return: %TRUE if object at @object_path was removed, %FALSE otherwise. 225 * 226 * Since: 2.30 227 */ 228 public bool unexport(string objectPath) 229 { 230 return g_dbus_object_manager_server_unexport(gDBusObjectManagerServer, Str.toStringz(objectPath)) != 0; 231 } 232 }