static void udisks_linux_drive_object_constructed (GObject *_object) { UDisksLinuxDriveObject *object = UDISKS_LINUX_DRIVE_OBJECT (_object); gchar *vendor; gchar *model; gchar *serial; GString *str; /* initial coldplug */ udisks_linux_drive_object_uevent (object, "add", object->devices->data); /* compute the object path */ vendor = g_strdup (udisks_drive_get_vendor (object->iface_drive)); model = g_strdup (udisks_drive_get_model (object->iface_drive)); serial = g_strdup (udisks_drive_get_serial (object->iface_drive)); strip_and_replace_with_uscore (vendor); strip_and_replace_with_uscore (model); strip_and_replace_with_uscore (serial); str = g_string_new ("/org/freedesktop/UDisks2/drives/"); if (vendor == NULL && model == NULL && serial == NULL) { g_string_append (str, "drive"); } else { /* <VENDOR>_<MODEL>_<SERIAL> */ if (vendor != NULL && strlen (vendor) > 0) { udisks_safe_append_to_object_path (str, vendor); } if (model != NULL && strlen (model) > 0) { if (str->str[str->len - 1] != '/') g_string_append_c (str, '_'); udisks_safe_append_to_object_path (str, model); } if (serial != NULL && strlen (serial) > 0) { if (str->str[str->len - 1] != '/') g_string_append_c (str, '_'); udisks_safe_append_to_object_path (str, serial); } } g_free (vendor); g_free (model); g_free (serial); g_dbus_object_skeleton_set_object_path (G_DBUS_OBJECT_SKELETON (object), str->str); g_string_free (str, TRUE); if (G_OBJECT_CLASS (udisks_linux_drive_object_parent_class)->constructed != NULL) G_OBJECT_CLASS (udisks_linux_drive_object_parent_class)->constructed (_object); }
static void udisks_linux_block_object_constructed (GObject *_object) { UDisksLinuxBlockObject *object = UDISKS_LINUX_BLOCK_OBJECT (_object); GString *str; object->mount_monitor = udisks_daemon_get_mount_monitor (object->daemon); g_signal_connect (object->mount_monitor, "mount-added", G_CALLBACK (on_mount_monitor_mount_added), object); g_signal_connect (object->mount_monitor, "mount-removed", G_CALLBACK (on_mount_monitor_mount_removed), object); /* initial coldplug */ udisks_linux_block_object_uevent (object, "add", NULL); /* compute the object path */ str = g_string_new ("/org/freedesktop/UDisks2/block_devices/"); udisks_safe_append_to_object_path (str, g_udev_device_get_name (object->device->udev_device)); g_dbus_object_skeleton_set_object_path (G_DBUS_OBJECT_SKELETON (object), str->str); g_string_free (str, TRUE); if (G_OBJECT_CLASS (udisks_linux_block_object_parent_class)->constructed != NULL) G_OBJECT_CLASS (udisks_linux_block_object_parent_class)->constructed (_object); }
static void udisks_linux_logical_volume_object_constructed (GObject *_object) { UDisksLinuxLogicalVolumeObject *object = UDISKS_LINUX_LOGICAL_VOLUME_OBJECT (_object); GString *s; if (G_OBJECT_CLASS (udisks_linux_logical_volume_object_parent_class)->constructed != NULL) G_OBJECT_CLASS (udisks_linux_logical_volume_object_parent_class)->constructed (_object); /* compute the object path */ s = g_string_new (g_dbus_object_get_object_path (G_DBUS_OBJECT (object->volume_group))); g_string_append_c (s, '/'); udisks_safe_append_to_object_path (s, object->name); g_dbus_object_skeleton_set_object_path (G_DBUS_OBJECT_SKELETON (object), s->str); g_string_free (s, TRUE); /* create the DBus interface */ object->iface_logical_volume = udisks_linux_logical_volume_new (); g_dbus_object_skeleton_add_interface (G_DBUS_OBJECT_SKELETON (object), G_DBUS_INTERFACE_SKELETON (object->iface_logical_volume)); }