[libvirt] [libvirt-glib 4/6] Add 'config' property to GVirDomainDevice

Zeeshan Ali (Khattak) zeeshanak at gnome.org
Tue Feb 28 18:25:05 UTC 2012


From: "Zeeshan Ali (Khattak)" <zeeshanak at gnome.org>

GVirDomainDevice should have an associated GVirConfigDomainDevice.
---
 libvirt-gobject/libvirt-gobject-domain-device.c |   32 +++++++++++++++++++++++
 libvirt-gobject/libvirt-gobject-domain-device.h |    1 +
 libvirt-gobject/libvirt-gobject.sym             |    1 +
 3 files changed, 34 insertions(+), 0 deletions(-)

diff --git a/libvirt-gobject/libvirt-gobject-domain-device.c b/libvirt-gobject/libvirt-gobject-domain-device.c
index 6282d8b..85879d2 100644
--- a/libvirt-gobject/libvirt-gobject-domain-device.c
+++ b/libvirt-gobject/libvirt-gobject-domain-device.c
@@ -37,6 +37,7 @@
 struct _GVirDomainDevicePrivate
 {
     GVirDomain *domain;
+    GVirConfigDomainDevice *config;
 };
 
 G_DEFINE_ABSTRACT_TYPE(GVirDomainDevice, gvir_domain_device, G_TYPE_OBJECT);
@@ -44,6 +45,7 @@ G_DEFINE_ABSTRACT_TYPE(GVirDomainDevice, gvir_domain_device, G_TYPE_OBJECT);
 enum {
     PROP_0,
     PROP_DOMAIN,
+    PROP_CONFIG,
 };
 
 static void gvir_domain_device_get_property(GObject *object,
@@ -59,6 +61,10 @@ static void gvir_domain_device_get_property(GObject *object,
         g_value_set_object(value, priv->domain);
         break;
 
+    case PROP_CONFIG:
+        g_value_set_object(value, priv->config);
+        break;
+
     default:
         G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
     }
@@ -79,6 +85,11 @@ static void gvir_domain_device_set_property(GObject *object,
         priv->domain = g_value_dup_object(value);
         break;
 
+    case PROP_CONFIG:
+        g_clear_object(&priv->config);
+        priv->config = g_value_dup_object(value);
+        break;
+
     default:
         G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
     }
@@ -93,6 +104,7 @@ static void gvir_domain_device_finalize(GObject *object)
     g_debug("Finalize GVirDomainDevice=%p", self);
 
     g_clear_object(&priv->domain);
+    g_clear_object(&priv->config);
 
     G_OBJECT_CLASS(gvir_domain_device_parent_class)->finalize(object);
 }
@@ -115,6 +127,16 @@ static void gvir_domain_device_class_init(GVirDomainDeviceClass *klass)
                                                         G_PARAM_CONSTRUCT_ONLY |
                                                         G_PARAM_STATIC_STRINGS));
 
+    g_object_class_install_property(object_class,
+                                    PROP_CONFIG,
+                                    g_param_spec_object("config",
+                                                        "Config",
+                                                        "The configuration",
+                                                        GVIR_CONFIG_TYPE_DOMAIN_DEVICE,
+                                                        G_PARAM_READWRITE |
+                                                        G_PARAM_CONSTRUCT_ONLY |
+                                                        G_PARAM_STATIC_STRINGS));
+
     g_type_class_add_private(klass, sizeof(GVirDomainDevicePrivate));
 }
 
@@ -144,3 +166,13 @@ virDomainPtr gvir_domain_device_get_domain_handle(GVirDomainDevice *self)
 GVirDomain *gvir_domain_device_get_domain(GVirDomainDevice *device) {
     return g_object_ref (device->priv->domain);
 }
+
+/**
+ * gvir_domain_device_get_config:
+ * @device: the domain device
+ *
+ * Returns: (transfer full): the config
+ */
+GVirConfigDomainDevice *gvir_domain_device_get_config(GVirDomainDevice *device) {
+    return g_object_ref (device->priv->config);
+}
diff --git a/libvirt-gobject/libvirt-gobject-domain-device.h b/libvirt-gobject/libvirt-gobject-domain-device.h
index 98acc2d..b308477 100644
--- a/libvirt-gobject/libvirt-gobject-domain-device.h
+++ b/libvirt-gobject/libvirt-gobject-domain-device.h
@@ -61,6 +61,7 @@ struct _GVirDomainDeviceClass
 
 GType gvir_domain_device_get_type(void);
 GVirDomain *gvir_domain_device_get_domain(GVirDomainDevice *device);
+GVirConfigDomainDevice *gvir_domain_device_get_config(GVirDomainDevice *device);
 
 G_END_DECLS
 
diff --git a/libvirt-gobject/libvirt-gobject.sym b/libvirt-gobject/libvirt-gobject.sym
index 0097692..d6999dc 100644
--- a/libvirt-gobject/libvirt-gobject.sym
+++ b/libvirt-gobject/libvirt-gobject.sym
@@ -34,6 +34,7 @@ LIBVIRT_GOBJECT_0.0.4 {
 
 	gvir_domain_device_get_type;
 	gvir_domain_device_get_domain;
+	gvir_domain_device_get_config;
 
 	gvir_domain_disk_get_type;
 	gvir_domain_disk_stats_get_type;
-- 
1.7.7.6




More information about the libvir-list mailing list