static void storaged_linux_drive_object_constructed (GObject *_object) { StoragedLinuxDriveObject *object = STORAGED_LINUX_DRIVE_OBJECT (_object); gchar *vendor; gchar *model; gchar *serial; GString *str; /* initial coldplug */ storaged_linux_drive_object_uevent (object, "add", object->devices->data); /* compute the object path */ vendor = g_strdup (storaged_drive_get_vendor (object->iface_drive)); model = g_strdup (storaged_drive_get_model (object->iface_drive)); serial = g_strdup (storaged_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/storaged/Storaged/drives/"); if (vendor == NULL && model == NULL && serial == NULL) { g_string_append (str, "drive"); } else { /* <VENDOR>_<MODEL>_<SERIAL> */ if (vendor != NULL && strlen (vendor) > 0) { storaged_safe_append_to_object_path (str, vendor); } if (model != NULL && strlen (model) > 0) { if (str->str[str->len - 1] != '/') g_string_append_c (str, '_'); storaged_safe_append_to_object_path (str, model); } if (serial != NULL && strlen (serial) > 0) { if (str->str[str->len - 1] != '/') g_string_append_c (str, '_'); storaged_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 (storaged_linux_drive_object_parent_class)->constructed != NULL) G_OBJECT_CLASS (storaged_linux_drive_object_parent_class)->constructed (_object); }
static void storaged_linux_block_object_constructed (GObject *_object) { StoragedLinuxBlockObject *object = STORAGED_LINUX_BLOCK_OBJECT (_object); GString *str; object->mount_monitor = storaged_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 */ storaged_linux_block_object_uevent (object, "add", NULL); /* compute the object path */ str = g_string_new ("/org/storaged/Storaged/block_devices/"); storaged_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 (storaged_linux_block_object_parent_class)->constructed != NULL) G_OBJECT_CLASS (storaged_linux_block_object_parent_class)->constructed (_object); }
static void storaged_linux_volume_group_object_constructed (GObject *_object) { StoragedLinuxVolumeGroupObject *object = STORAGED_LINUX_VOLUME_GROUP_OBJECT (_object); GString *s; if (G_OBJECT_CLASS (storaged_linux_volume_group_object_parent_class)->constructed != NULL) G_OBJECT_CLASS (storaged_linux_volume_group_object_parent_class)->constructed (_object); object->logical_volumes = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, (GDestroyNotify) g_object_unref); /* compute the object path */ s = g_string_new ("/org/storaged/Storaged/lvm/"); storaged_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_volume_group = storaged_linux_volume_group_new (); g_dbus_object_skeleton_add_interface (G_DBUS_OBJECT_SKELETON (object), G_DBUS_INTERFACE_SKELETON (object->iface_volume_group)); /* Watch fstab and crypttab for changes. */ g_signal_connect (storaged_daemon_get_fstab_monitor (object->daemon), "entry-added", G_CALLBACK (etctabs_changed), object); g_signal_connect (storaged_daemon_get_fstab_monitor (object->daemon), "entry-removed", G_CALLBACK (etctabs_changed), object); g_signal_connect (storaged_daemon_get_crypttab_monitor (object->daemon), "entry-added", G_CALLBACK (etctabs_changed), object); g_signal_connect (storaged_daemon_get_crypttab_monitor (object->daemon), "entry-removed", G_CALLBACK (etctabs_changed), object); }
static void storaged_linux_logical_volume_object_constructed (GObject *_object) { StoragedLinuxLogicalVolumeObject *object = STORAGED_LINUX_LOGICAL_VOLUME_OBJECT (_object); GString *s; if (G_OBJECT_CLASS (storaged_linux_logical_volume_object_parent_class)->constructed != NULL) G_OBJECT_CLASS (storaged_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, '/'); storaged_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 = storaged_linux_logical_volume_new (); g_dbus_object_skeleton_add_interface (G_DBUS_OBJECT_SKELETON (object), G_DBUS_INTERFACE_SKELETON (object->iface_logical_volume)); }