summaryrefslogtreecommitdiff
path: root/src/nm-checkpoint.c
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2018-03-27 12:45:23 +0200
committerThomas Haller <thaller@redhat.com>2018-04-04 14:02:13 +0200
commitffb492678ec5c22626f334fa7b3b769d284f074c (patch)
treeceea87469eab5d679046077bec30600240e6a628 /src/nm-checkpoint.c
parent6f85d3e0b9bd80a74f4c20888103544f95be12a4 (diff)
downloadNetworkManager-ffb492678ec5c22626f334fa7b3b769d284f074c.tar.gz
checkpoint: embed CList in NMCheckpoint instance
We don't need an external CheckpointItem, just to wrap the CList instance. Embed it directly in NMCheckpoint. Sure, that exposes the checkpoints_lst field in the (internal) header file, hiding the private member less.
Diffstat (limited to 'src/nm-checkpoint.c')
-rw-r--r--src/nm-checkpoint.c21
1 files changed, 13 insertions, 8 deletions
diff --git a/src/nm-checkpoint.c b/src/nm-checkpoint.c
index c117ab9960..ce36c7c9aa 100644
--- a/src/nm-checkpoint.c
+++ b/src/nm-checkpoint.c
@@ -54,7 +54,7 @@ NM_GOBJECT_PROPERTIES_DEFINE_BASE (
PROP_ROLLBACK_TIMEOUT,
);
-typedef struct {
+struct _NMCheckpointPrivate {
/* properties */
GHashTable *devices;
gint64 created;
@@ -64,11 +64,6 @@ typedef struct {
gint64 rollback_ts;
NMCheckpointCreateFlags flags;
GHashTable *connection_uuids;
-} NMCheckpointPrivate;
-
-struct _NMCheckpoint {
- NMDBusObject parent;
- NMCheckpointPrivate _priv;
};
struct _NMCheckpointClass {
@@ -77,7 +72,7 @@ struct _NMCheckpointClass {
G_DEFINE_TYPE (NMCheckpoint, nm_checkpoint, NM_TYPE_DBUS_OBJECT)
-#define NM_CHECKPOINT_GET_PRIVATE(self) _NM_GET_PRIVATE (self, NMCheckpoint, NM_IS_CHECKPOINT)
+#define NM_CHECKPOINT_GET_PRIVATE(self) _NM_GET_PRIVATE_PTR (self, NMCheckpoint, NM_IS_CHECKPOINT)
/*****************************************************************************/
@@ -457,7 +452,13 @@ get_property (GObject *object, guint prop_id,
static void
nm_checkpoint_init (NMCheckpoint *self)
{
- NMCheckpointPrivate *priv = NM_CHECKPOINT_GET_PRIVATE (self);
+ NMCheckpointPrivate *priv;
+
+ priv = G_TYPE_INSTANCE_GET_PRIVATE (self, NM_TYPE_CHECKPOINT, NMCheckpointPrivate);
+
+ self->_priv = priv;
+
+ c_list_init (&self->checkpoints_lst);
priv->devices = g_hash_table_new_full (nm_direct_hash, NULL,
NULL, device_checkpoint_destroy);
@@ -525,6 +526,8 @@ dispose (GObject *object)
NMCheckpoint *self = NM_CHECKPOINT (object);
NMCheckpointPrivate *priv = NM_CHECKPOINT_GET_PRIVATE (self);
+ nm_assert (c_list_is_empty (&self->checkpoints_lst));
+
g_clear_pointer (&priv->devices, g_hash_table_unref);
g_clear_pointer (&priv->connection_uuids, g_hash_table_unref);
@@ -552,6 +555,8 @@ nm_checkpoint_class_init (NMCheckpointClass *checkpoint_class)
GObjectClass *object_class = G_OBJECT_CLASS (checkpoint_class);
NMDBusObjectClass *dbus_object_class = NM_DBUS_OBJECT_CLASS (checkpoint_class);
+ g_type_class_add_private (object_class, sizeof (NMCheckpointPrivate));
+
dbus_object_class->export_path = NM_DBUS_EXPORT_PATH_NUMBERED (NM_DBUS_PATH"/Checkpoint");
dbus_object_class->interface_infos = NM_DBUS_INTERFACE_INFOS (&interface_info_checkpoint);