[PATCH 31/36] libxl: convert libxlMigrationDstArgs to GObject

Rafael Fonseca r4f4rfs at gmail.com
Fri Apr 3 15:15:59 UTC 2020


Signed-off-by: Rafael Fonseca <r4f4rfs at gmail.com>
---
 src/libxl/libxl_migration.c | 57 +++++++++++++++++++++++--------------
 1 file changed, 36 insertions(+), 21 deletions(-)

diff --git a/src/libxl/libxl_migration.c b/src/libxl/libxl_migration.c
index a105a03b47..15724bb262 100644
--- a/src/libxl/libxl_migration.c
+++ b/src/libxl/libxl_migration.c
@@ -60,7 +60,7 @@ struct _libxlMigrationCookie {
 };
 
 typedef struct _libxlMigrationDstArgs {
-    virObject parent;
+    GObject parent;
 
     int recvfd;
     virConnectPtr conn;
@@ -73,7 +73,28 @@ typedef struct _libxlMigrationDstArgs {
     size_t nsocks;
 } libxlMigrationDstArgs;
 
-static virClassPtr libxlMigrationDstArgsClass;
+G_DEFINE_TYPE(libxlMigrationDstArgs, libxl_migration_dst_args, G_TYPE_OBJECT);
+#define LIBXL_TYPE_MIGRATION_DST_ARGS libxl_migration_dst_args_get_type()
+G_DECLARE_FINAL_TYPE(libxlMigrationDstArgs,
+                     libxl_migration_dst_args,
+                     LIBXL,
+                     MIGRATION_DST_ARGS,
+                     GObject);
+
+static void libxlMigrationDstArgsFinalize(GObject *obj);
+
+static void
+libxl_migration_dst_args_init(lixlMigrationDstArgs *args G_GNUC_UNUSED)
+{
+}
+
+static void
+libxl_migration_dst_args_class_init(lixlMigrationDstArgsClass *klass)
+{
+    GObjectClass *obj = G_OBJECT_CLASS(klass);
+
+    obj->finalize = libxlMigrationDstArgsFinalize;
+}
 
 
 static void
@@ -226,26 +247,18 @@ libxlMigrationEatCookie(const char *cookiein,
 }
 
 static void
-libxlMigrationDstArgsDispose(void *obj)
+libxlMigrationDstArgsFinalize(GObject *obj)
 {
-    libxlMigrationDstArgs *args = obj;
+    libxlMigrationDstArgs *args = LIBXL_MIGRATION_DST_ARGS(obj);
 
     libxlMigrationCookieFree(args->migcookie);
     VIR_FREE(args->socks);
     virObjectUnref(args->conn);
     virObjectUnref(args->vm);
-}
 
-static int
-libxlMigrationDstArgsOnceInit(void)
-{
-    if (!VIR_CLASS_NEW(libxlMigrationDstArgs, virClassForObject()))
-        return -1;
-
-    return 0;
+    G_OBJECT_CLASS(libxl_migration_dst_args_parent_class)->finalize(obj);
 }
 
-VIR_ONCE_GLOBAL_INIT(libxlMigrationDstArgs);
 
 static void
 libxlDoMigrateDstReceive(void *opaque)
@@ -277,7 +290,7 @@ libxlDoMigrateDstReceive(void *opaque)
     }
     args->nsocks = 0;
     VIR_FORCE_CLOSE(recvfd);
-    virObjectUnref(args);
+    g_object_unref(args);
     virDomainObjEndAPI(&vm);
 }
 
@@ -339,7 +352,7 @@ libxlMigrateDstReceive(virNetSocketPtr sock,
     }
     args->nsocks = 0;
     VIR_FORCE_CLOSE(recvfd);
-    virObjectUnref(args);
+    g_object_unref(args);
 }
 
 static int
@@ -600,8 +613,8 @@ libxlDomainMigrationDstPrepareTunnel3(virConnectPtr dconn,
     if (libxlMigrationDstArgsInitialize() < 0)
         goto endjob;
 
-    if (!(args = virObjectNew(libxlMigrationDstArgsClass)))
-        goto endjob;
+    args = LIBXL_MIGRATION_DST_ARGS(
+            g_object_new(LIBXL_TYPE_MIGRATION_DST_ARGS, NULL));
 
     args->conn = virObjectRef(dconn);
     args->vm = virObjectRef(vm);
@@ -634,7 +647,8 @@ libxlDomainMigrationDstPrepareTunnel3(virConnectPtr dconn,
     libxlMigrationCookieFree(mig);
     VIR_FORCE_CLOSE(dataFD[1]);
     VIR_FORCE_CLOSE(dataFD[0]);
-    virObjectUnref(args);
+    if (args)
+        g_object_unref(args);
     /* Remove virDomainObj from domain list */
     if (vm)
         virDomainObjListRemove(driver->domains, vm);
@@ -765,8 +779,8 @@ libxlDomainMigrationDstPrepare(virConnectPtr dconn,
     if (libxlMigrationDstArgsInitialize() < 0)
         goto endjob;
 
-    if (!(args = virObjectNew(libxlMigrationDstArgsClass)))
-        goto endjob;
+    args = LIBXL_MIGRATION_DST_ARGS(
+            g_object_new(LIBXL_TYPE_MIGRATION_DST_ARGS, NULL));
 
     args->conn = virObjectRef(dconn);
     args->vm = virObjectRef(vm);
@@ -823,7 +837,8 @@ libxlDomainMigrationDstPrepare(virConnectPtr dconn,
         VIR_FREE(hostname);
     else
         virURIFree(uri);
-    virObjectUnref(args);
+    if (args)
+        g_object_unref(args);
     virDomainObjEndAPI(&vm);
     return ret;
 }
-- 
2.25.1





More information about the libvir-list mailing list