summary refs log tree commit diff
path: root/src/settings/nm-settings-storage.h
diff options
context:
space:
mode:
authorMichael Biebl <biebl@debian.org>2019-07-31 10:51:42 +0200
committerMichael Biebl <biebl@debian.org>2019-07-31 10:51:42 +0200
commit2e5fa45ddfbb5cffa1e78221f1cea706e2f298af (patch)
tree86f69d36c56de3074280456eddc854a780b8e04b /src/settings/nm-settings-storage.h
parent85563b7fc7ec2cd21e38debb9b28db342e2e8e7c (diff)
New upstream version 1.19.90 upstream/1.19.90
Diffstat (limited to 'src/settings/nm-settings-storage.h')
-rw-r--r--src/settings/nm-settings-storage.h122
1 files changed, 122 insertions, 0 deletions
diff --git a/src/settings/nm-settings-storage.h b/src/settings/nm-settings-storage.h
new file mode 100644
index 00000000..c43145b5
--- /dev/null
+++ b/src/settings/nm-settings-storage.h
@@ -0,0 +1,122 @@
+/*
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301 USA.
+ *
+ * Copyright 2018 Red Hat, Inc.
+ */
+
+#ifndef __NM_SETTINGS_STORAGE_H__
+#define __NM_SETTINGS_STORAGE_H__
+
+/*****************************************************************************/
+
+#include "c-list/src/c-list.h"
+
+#define NM_TYPE_SETTINGS_STORAGE            (nm_settings_storage_get_type ())
+#define NM_SETTINGS_STORAGE(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), NM_TYPE_SETTINGS_STORAGE, NMSettingsStorage))
+#define NM_SETTINGS_STORAGE_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), NM_TYPE_SETTINGS_STORAGE, NMSettingsStorageClass))
+#define NM_IS_SETTINGS_STORAGE(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NM_TYPE_SETTINGS_STORAGE))
+#define NM_IS_SETTINGS_STORAGE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), NM_TYPE_SETTINGS_STORAGE))
+#define NM_SETTINGS_STORAGE_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_SETTINGS_STORAGE, NMSettingsStorageClass))
+
+#define NM_SETTINGS_STORAGE_PLUGIN   "plugin"
+#define NM_SETTINGS_STORAGE_UUID     "uuid"
+#define NM_SETTINGS_STORAGE_FILENAME "filename"
+
+struct _NMSettingsPlugin;
+
+typedef struct NMSettingsStorage {
+	GObject parent;
+	struct _NMSettingsPlugin *_plugin;
+	char *_uuid;
+	char *_filename;
+	CList _storage_lst;
+	CList _storage_by_uuid_lst;
+} NMSettingsStorage;
+
+typedef struct {
+	GObjectClass parent;
+
+	int (*cmp_fcn) (NMSettingsStorage *a,
+	                NMSettingsStorage *b);
+
+} NMSettingsStorageClass;
+
+GType nm_settings_storage_get_type (void);
+
+NMSettingsStorage *nm_settings_storage_new (struct _NMSettingsPlugin *plugin,
+                                            const char *uuid,
+                                            const char *filename);
+
+static inline struct _NMSettingsPlugin *
+nm_settings_storage_get_plugin (const NMSettingsStorage *self)
+{
+	GType nm_settings_plugin_get_type (void);
+
+	g_return_val_if_fail (NM_IS_SETTINGS_STORAGE (self), NULL);
+
+	nm_assert (G_TYPE_CHECK_INSTANCE_TYPE (self->_plugin, nm_settings_plugin_get_type ()));
+	return self->_plugin;
+}
+
+static inline const char *
+nm_settings_storage_get_uuid (const NMSettingsStorage *self)
+{
+	gboolean nm_utils_is_uuid (const char *str);
+
+	g_return_val_if_fail (NM_IS_SETTINGS_STORAGE (self), NULL);
+
+	nm_assert (nm_utils_is_uuid (self->_uuid));
+	return self->_uuid;
+}
+
+static inline const char *
+nm_settings_storage_get_uuid_opt (const NMSettingsStorage *self)
+{
+	gboolean nm_utils_is_uuid (const char *str);
+
+	g_return_val_if_fail (NM_IS_SETTINGS_STORAGE (self), NULL);
+
+	nm_assert (!self->_uuid || nm_utils_is_uuid (self->_uuid));
+	return self->_uuid;
+}
+
+static inline const char *
+nm_settings_storage_get_filename (const NMSettingsStorage *self)
+{
+	g_return_val_if_fail (NM_IS_SETTINGS_STORAGE (self), NULL);
+
+	return self->_filename;
+}
+
+/*****************************************************************************/
+
+#define nm_assert_valid_settings_storage(plugin, storage) \
+	G_STMT_START { \
+		NMSettingsPlugin *const _plugin = (plugin); \
+		NMSettingsStorage *const _storage = (storage); \
+		\
+		nm_assert (!_plugin || NM_IS_SETTINGS_PLUGIN (_plugin)); \
+		nm_assert (NM_IS_SETTINGS_STORAGE (_storage)); \
+		nm_assert (!_plugin || nm_settings_storage_get_plugin (_storage) == _plugin); \
+	} G_STMT_END
+
+/*****************************************************************************/
+
+int nm_settings_storage_cmp (NMSettingsStorage *sd_a,
+                             NMSettingsStorage *sd_b,
+                             const GSList *plugin_list);
+
+#endif /* __NM_SETTINGS_STORAGE_H__ */