class Gio::DBusObjectManagerServer

Overview

#GDBusObjectManagerServer is used to export #GDBusObject instances using the standardized org.freedesktop.DBus.ObjectManager interface. For example, remote D-Bus clients can get all objects and properties in a single call. Additionally, any change in the object hierarchy is broadcast using signals. This means that D-Bus clients can keep caches up to date by only listening to D-Bus signals.

The recommended path to export an object manager at is the path form of the well-known name of a D-Bus service, or below. For example, if a D-Bus service is available at the well-known name net.example.ExampleService1, the object manager should typically be exported at /net/example/ExampleService1, or below (to allow for multiple object managers in a service).

It is supported, but not recommended, to export an object manager at the root path, /.

See #GDBusObjectManagerClient for the client-side code that is intended to be used with #GDBusObjectManagerServer or any D-Bus object implementing the org.freedesktop.DBus.ObjectManager interface.

Included Modules

Defined in:

lib/gi-crystal/src/auto/gio-2.0/d_bus_object_manager_server.cr

Constructors

Class Method Summary

Instance Method Summary

Instance methods inherited from module Gio::DBusObjectManager

interface(object_path : String, interface_name : String) : Gio::DBusInterface? interface, interface_added_signal interface_added_signal, interface_removed_signal interface_removed_signal, object(object_path : String) : Gio::DBusObject? object, object_added_signal object_added_signal, object_path : String object_path, object_removed_signal object_removed_signal, objects : GLib::List objects, to_unsafe to_unsafe

Class methods inherited from module Gio::DBusObjectManager

g_type : UInt64 g_type

Instance methods inherited from class GObject::Object

bind_property(source_property : String, target : GObject::Object, target_property : String, flags : GObject::BindingFlags) : GObject::Binding bind_property, bind_property_full(source_property : String, target : GObject::Object, target_property : String, flags : GObject::BindingFlags, transform_to : GObject::Closure, transform_from : GObject::Closure) : GObject::Binding bind_property_full, data(key : String) : Pointer(Void)? data, finalize finalize, freeze_notify : Nil freeze_notify, getv(names : Enumerable(String), values : Enumerable(_)) : Nil getv, notify(property_name : String) : Nil notify, notify_by_pspec(pspec : GObject::ParamSpec) : Nil notify_by_pspec, notify_signal notify_signal, property(property_name : String, value : _) : Nil property, qdata(quark : UInt32) : Pointer(Void)? qdata, ref_count : UInt32 ref_count, run_dispose : Nil run_dispose, set_data(key : String, data : Pointer(Void)?) : Nil set_data, set_property(property_name : String, value : _) : Nil set_property, steal_data(key : String) : Pointer(Void)? steal_data, steal_qdata(quark : UInt32) : Pointer(Void)? steal_qdata, thaw_notify : Nil thaw_notify, to_unsafe : Pointer(Void) to_unsafe, watch_closure(closure : GObject::Closure) : Nil watch_closure

Constructor methods inherited from class GObject::Object

cast(obj : GObject::Object) : self cast, cast?(obj : GObject::Object) : self? cast?, new(pointer : Pointer(Void), transfer : GICrystal::Transfer)
new
new
, newv(object_type : UInt64, parameters : Enumerable(GObject::Parameter)) : self newv

Class methods inherited from class GObject::Object

compat_control(what : UInt64, data : Pointer(Void)?) : UInt64 compat_control, g_type : UInt64 g_type, interface_find_property(g_iface : GObject::TypeInterface, property_name : String) : GObject::ParamSpec interface_find_property, interface_list_properties(g_iface : GObject::TypeInterface) : Enumerable(GObject::ParamSpec) interface_list_properties

Constructor Detail

def self.new(object_path : String) : self #

Creates a new #GDBusObjectManagerServer object.

The returned server isn't yet exported on any connection. To do so, use g_dbus_object_manager_server_set_connection(). Normally you want to export all of your objects before doing so to avoid InterfacesAdded signals being emitted.


def self.new #

Initialize a new DBusObjectManagerServer.


def self.new(*, connection : Gio::DBusConnection? = nil, object_path : String? = nil) #

Class Method Detail

def self.g_type : UInt64 #

Returns the type id (GType) registered in GLib type system.


Instance Method Detail

def connection : Gio::DBusConnection? #

Gets the #GDBusConnection used by @manager.


def connection=(connection : Gio::DBusConnection?) : Nil #

Exports all objects managed by @manager on @connection. If @connection is nil, stops exporting objects.


def export(object : Gio::DBusObjectSkeleton) : Nil #

Exports @object on @manager.

If there is already a #GDBusObject exported at the object path, then the old object is removed.

The object path for @object must be in the hierarchy rooted by the object path for @manager.

Note that @manager will take a reference on @object for as long as it is exported.


def export_uniquely(object : Gio::DBusObjectSkeleton) : Nil #

Like g_dbus_object_manager_server_export() but appends a string of the form _N (with N being a natural number) to @object's object path if an object with the given path already exists. As such, the #GDBusObjectProxy:g-object-path property of @object may be modified.


def is_exported(object : Gio::DBusObjectSkeleton) : Bool #

Returns whether @object is currently exported on @manager.


def object_path : String #

def object_path=(value : String) : String #

def unexport(object_path : String) : Bool #

If @manager has an object at @path, removes the object. Otherwise does nothing.

Note that @object_path must be in the hierarchy rooted by the object path for @manager.