From: "Zeeshan Ali (Khattak)" <zeeshanak(a)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