diff options
Diffstat (limited to 'src/settings/nm-settings-plugin.c')
| -rw-r--r-- | src/settings/nm-settings-plugin.c | 183 |
1 files changed, 70 insertions, 113 deletions
diff --git a/src/settings/nm-settings-plugin.c b/src/settings/nm-settings-plugin.c index e7275631..f6dd2cfb 100644 --- a/src/settings/nm-settings-plugin.c +++ b/src/settings/nm-settings-plugin.c @@ -15,94 +15,117 @@ * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * - * Copyright (C) 2007 - 2018 Red Hat, Inc. + * Copyright (C) 2007 - 2011 Red Hat, Inc. * Copyright (C) 2008 Novell, Inc. */ #include "nm-default.h" #include "nm-settings-plugin.h" - #include "nm-settings-connection.h" -/*****************************************************************************/ - -enum { - CONNECTION_ADDED, - UNMANAGED_SPECS_CHANGED, - UNRECOGNIZED_SPECS_CHANGED, - - LAST_SIGNAL -}; - -static guint signals[LAST_SIGNAL] = { 0 }; - -G_DEFINE_TYPE (NMSettingsPlugin, nm_settings_plugin, G_TYPE_OBJECT) +G_DEFINE_INTERFACE (NMSettingsPlugin, nm_settings_plugin, G_TYPE_OBJECT) -/*****************************************************************************/ +static void +nm_settings_plugin_default_init (NMSettingsPluginInterface *g_iface) +{ + GType iface_type = G_TYPE_FROM_INTERFACE (g_iface); + static gboolean initialized = FALSE; + + if (initialized) + return; + + /* Signals */ + g_signal_new (NM_SETTINGS_PLUGIN_CONNECTION_ADDED, + iface_type, + G_SIGNAL_RUN_FIRST, + G_STRUCT_OFFSET (NMSettingsPluginInterface, connection_added), + NULL, NULL, + g_cclosure_marshal_VOID__OBJECT, + G_TYPE_NONE, 1, + NM_TYPE_SETTINGS_CONNECTION); + + g_signal_new (NM_SETTINGS_PLUGIN_UNMANAGED_SPECS_CHANGED, + iface_type, + G_SIGNAL_RUN_FIRST, + G_STRUCT_OFFSET (NMSettingsPluginInterface, unmanaged_specs_changed), + NULL, NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, 0); + + g_signal_new (NM_SETTINGS_PLUGIN_UNRECOGNIZED_SPECS_CHANGED, + iface_type, + G_SIGNAL_RUN_FIRST, + G_STRUCT_OFFSET (NMSettingsPluginInterface, unrecognized_specs_changed), + NULL, NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, 0); + + initialized = TRUE; +} void -nm_settings_plugin_initialize (NMSettingsPlugin *self) +nm_settings_plugin_init (NMSettingsPlugin *config) { - g_return_if_fail (NM_IS_SETTINGS_PLUGIN (self)); + g_return_if_fail (config != NULL); - if (NM_SETTINGS_PLUGIN_GET_CLASS (self)->initialize) - NM_SETTINGS_PLUGIN_GET_CLASS (self)->initialize (self); + if (NM_SETTINGS_PLUGIN_GET_INTERFACE (config)->init) + NM_SETTINGS_PLUGIN_GET_INTERFACE (config)->init (config); } GSList * -nm_settings_plugin_get_connections (NMSettingsPlugin *self) +nm_settings_plugin_get_connections (NMSettingsPlugin *config) { - g_return_val_if_fail (NM_IS_SETTINGS_PLUGIN (self), NULL); + g_return_val_if_fail (config != NULL, NULL); - if (NM_SETTINGS_PLUGIN_GET_CLASS (self)->get_connections) - return NM_SETTINGS_PLUGIN_GET_CLASS (self)->get_connections (self); + if (NM_SETTINGS_PLUGIN_GET_INTERFACE (config)->get_connections) + return NM_SETTINGS_PLUGIN_GET_INTERFACE (config)->get_connections (config); return NULL; } gboolean -nm_settings_plugin_load_connection (NMSettingsPlugin *self, +nm_settings_plugin_load_connection (NMSettingsPlugin *config, const char *filename) { - g_return_val_if_fail (NM_IS_SETTINGS_PLUGIN (self), FALSE); + g_return_val_if_fail (config != NULL, FALSE); - if (NM_SETTINGS_PLUGIN_GET_CLASS (self)->load_connection) - return NM_SETTINGS_PLUGIN_GET_CLASS (self)->load_connection (self, filename); + if (NM_SETTINGS_PLUGIN_GET_INTERFACE (config)->load_connection) + return NM_SETTINGS_PLUGIN_GET_INTERFACE (config)->load_connection (config, filename); return FALSE; } void -nm_settings_plugin_reload_connections (NMSettingsPlugin *self) +nm_settings_plugin_reload_connections (NMSettingsPlugin *config) { - g_return_if_fail (NM_IS_SETTINGS_PLUGIN (self)); + g_return_if_fail (config != NULL); - if (NM_SETTINGS_PLUGIN_GET_CLASS (self)->reload_connections) - NM_SETTINGS_PLUGIN_GET_CLASS (self)->reload_connections (self); + if (NM_SETTINGS_PLUGIN_GET_INTERFACE (config)->reload_connections) + NM_SETTINGS_PLUGIN_GET_INTERFACE (config)->reload_connections (config); } GSList * -nm_settings_plugin_get_unmanaged_specs (NMSettingsPlugin *self) +nm_settings_plugin_get_unmanaged_specs (NMSettingsPlugin *config) { - g_return_val_if_fail (NM_IS_SETTINGS_PLUGIN (self), NULL); + g_return_val_if_fail (config != NULL, NULL); - if (NM_SETTINGS_PLUGIN_GET_CLASS (self)->get_unmanaged_specs) - return NM_SETTINGS_PLUGIN_GET_CLASS (self)->get_unmanaged_specs (self); + if (NM_SETTINGS_PLUGIN_GET_INTERFACE (config)->get_unmanaged_specs) + return NM_SETTINGS_PLUGIN_GET_INTERFACE (config)->get_unmanaged_specs (config); return NULL; } GSList * -nm_settings_plugin_get_unrecognized_specs (NMSettingsPlugin *self) +nm_settings_plugin_get_unrecognized_specs (NMSettingsPlugin *config) { - g_return_val_if_fail (NM_IS_SETTINGS_PLUGIN (self), NULL); + g_return_val_if_fail (config != NULL, NULL); - if (NM_SETTINGS_PLUGIN_GET_CLASS (self)->get_unrecognized_specs) - return NM_SETTINGS_PLUGIN_GET_CLASS (self)->get_unrecognized_specs (self); + if (NM_SETTINGS_PLUGIN_GET_INTERFACE (config)->get_unrecognized_specs) + return NM_SETTINGS_PLUGIN_GET_INTERFACE (config)->get_unrecognized_specs (config); return NULL; } /** * nm_settings_plugin_add_connection: - * @self: the #NMSettingsPlugin + * @config: the #NMSettingsPlugin * @connection: the source connection to create a plugin-specific * #NMSettingsConnection from * @save_to_disk: %TRUE to save the connection to disk immediately, %FALSE to @@ -117,88 +140,22 @@ nm_settings_plugin_get_unrecognized_specs (NMSettingsPlugin *self) * Returns: the new #NMSettingsConnection or %NULL */ NMSettingsConnection * -nm_settings_plugin_add_connection (NMSettingsPlugin *self, +nm_settings_plugin_add_connection (NMSettingsPlugin *config, NMConnection *connection, gboolean save_to_disk, GError **error) { - NMSettingsPluginClass *klass; + NMSettingsPluginInterface *config_interface; - g_return_val_if_fail (NM_IS_SETTINGS_PLUGIN (self), NULL); + g_return_val_if_fail (config != NULL, NULL); g_return_val_if_fail (NM_IS_CONNECTION (connection), NULL); - klass = NM_SETTINGS_PLUGIN_GET_CLASS (self); - if (!klass->add_connection) { + config_interface = NM_SETTINGS_PLUGIN_GET_INTERFACE (config); + if (!config_interface->add_connection) { g_set_error_literal (error, NM_SETTINGS_ERROR, NM_SETTINGS_ERROR_NOT_SUPPORTED, "Plugin does not support adding connections"); return NULL; } - return klass->add_connection (self, connection, save_to_disk, error); -} - -/*****************************************************************************/ - -void -_nm_settings_plugin_emit_signal_connection_added (NMSettingsPlugin *self, - NMSettingsConnection *sett_conn) -{ - nm_assert (NM_IS_SETTINGS_PLUGIN (self)); - nm_assert (NM_IS_SETTINGS_CONNECTION (sett_conn)); - - g_signal_emit (self, signals[CONNECTION_ADDED], 0, sett_conn); -} - -void -_nm_settings_plugin_emit_signal_unmanaged_specs_changed (NMSettingsPlugin *self) -{ - nm_assert (NM_IS_SETTINGS_PLUGIN (self)); - - g_signal_emit (self, signals[UNMANAGED_SPECS_CHANGED], 0); -} - -void -_nm_settings_plugin_emit_signal_unrecognized_specs_changed (NMSettingsPlugin *self) -{ - nm_assert (NM_IS_SETTINGS_PLUGIN (self)); - - g_signal_emit (self, signals[UNRECOGNIZED_SPECS_CHANGED], 0); -} - -/*****************************************************************************/ - -static void -nm_settings_plugin_init (NMSettingsPlugin *self) -{ -} - -static void -nm_settings_plugin_class_init (NMSettingsPluginClass *klass) -{ - GObjectClass *object_class = G_OBJECT_CLASS (klass); - - signals[CONNECTION_ADDED] = - g_signal_new (NM_SETTINGS_PLUGIN_CONNECTION_ADDED, - G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_FIRST, - 0, NULL, NULL, - g_cclosure_marshal_VOID__OBJECT, - G_TYPE_NONE, 1, - NM_TYPE_SETTINGS_CONNECTION); - - signals[UNMANAGED_SPECS_CHANGED] = - g_signal_new (NM_SETTINGS_PLUGIN_UNMANAGED_SPECS_CHANGED, - G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_FIRST, - 0, NULL, NULL, - g_cclosure_marshal_VOID__VOID, - G_TYPE_NONE, 0); - - signals[UNRECOGNIZED_SPECS_CHANGED] = - g_signal_new (NM_SETTINGS_PLUGIN_UNRECOGNIZED_SPECS_CHANGED, - G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_FIRST, - 0, NULL, NULL, - g_cclosure_marshal_VOID__VOID, - G_TYPE_NONE, 0); + return config_interface->add_connection (config, connection, save_to_disk, error); } |