Ejemplo n.º 1
0
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);
}
Ejemplo n.º 2
0
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));
}