From 5c5845c649d3d6ac814f43c4500b7ae4cea68f5a Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Fri, 3 Feb 2017 15:45:06 +0100 Subject: [PATCH] core: add and use nm_settings_connection_cmp_timestamp*() Only move the function, no change in behavior. --- src/nm-manager.c | 2 +- src/settings/nm-settings-connection.c | 37 +++++++++++++++++++++++++++ src/settings/nm-settings-connection.h | 3 +++ src/settings/nm-settings.c | 32 +---------------------- src/settings/nm-settings.h | 2 -- 5 files changed, 42 insertions(+), 34 deletions(-) diff --git a/src/nm-manager.c b/src/nm-manager.c index 1bad6925b..9893f7c47 100644 --- a/src/nm-manager.c +++ b/src/nm-manager.c @@ -1738,7 +1738,7 @@ get_existing_connection (NMManager *self, NMDevice *device, gboolean *out_genera * When no configured connection matches the generated connection, we keep * the generated connection instead. */ - connections = g_slist_reverse (g_slist_sort (connections, nm_settings_sort_connections)); + connections = g_slist_reverse (g_slist_sort (connections, (GCompareFunc) nm_settings_connection_cmp_timestamp)); matched = NM_SETTINGS_CONNECTION (nm_utils_match_connection (connections, connection, nm_device_has_carrier (device), diff --git a/src/settings/nm-settings-connection.c b/src/settings/nm-settings-connection.c index 81dcb6989..66069e740 100644 --- a/src/settings/nm-settings-connection.c +++ b/src/settings/nm-settings-connection.c @@ -2162,6 +2162,43 @@ nm_settings_connection_set_flags_all (NMSettingsConnection *self, NMSettingsConn /*****************************************************************************/ +/* sorting for "best" connections. + * The function sorts connections in ascending timestamp order. + * That means an older connection (lower timestamp) goes before + * a newer one. + */ +int +nm_settings_connection_cmp_timestamp (NMSettingsConnection *ac, NMSettingsConnection *bc) +{ + guint64 ats = 0, bts = 0; + + if (ac == bc) + return 0; + if (!ac) + return -1; + if (!bc) + return 1; + + /* In the future we may use connection priorities in addition to timestamps */ + nm_settings_connection_get_timestamp (ac, &ats); + nm_settings_connection_get_timestamp (bc, &bts); + + if (ats < bts) + return -1; + else if (ats > bts) + return 1; + return 0; +} + +int +nm_settings_connection_cmp_timestamp_p_with_data (gconstpointer pa, gconstpointer pb, gpointer user_data) +{ + return nm_settings_connection_cmp_timestamp (*((NMSettingsConnection **) pa), + *((NMSettingsConnection **) pb)); +} + +/*****************************************************************************/ + /** * nm_settings_connection_get_timestamp: * @self: the #NMSettingsConnection diff --git a/src/settings/nm-settings-connection.h b/src/settings/nm-settings-connection.h index c5ddd8173..fa7e4b559 100644 --- a/src/settings/nm-settings-connection.h +++ b/src/settings/nm-settings-connection.h @@ -184,6 +184,9 @@ NMSettingsConnectionFlags nm_settings_connection_get_flags (NMSettingsConnection NMSettingsConnectionFlags nm_settings_connection_set_flags (NMSettingsConnection *self, NMSettingsConnectionFlags flags, gboolean set); NMSettingsConnectionFlags nm_settings_connection_set_flags_all (NMSettingsConnection *self, NMSettingsConnectionFlags flags); +int nm_settings_connection_cmp_timestamp (NMSettingsConnection *ac, NMSettingsConnection *ab); +int nm_settings_connection_cmp_timestamp_p_with_data (gconstpointer pa, gconstpointer pb, gpointer user_data); + gboolean nm_settings_connection_get_timestamp (NMSettingsConnection *self, guint64 *out_timestamp); diff --git a/src/settings/nm-settings.c b/src/settings/nm-settings.c index 50b3b7722..dba9332d2 100644 --- a/src/settings/nm-settings.c +++ b/src/settings/nm-settings.c @@ -2085,36 +2085,6 @@ nm_settings_device_removed (NMSettings *self, NMDevice *device, gboolean quittin /*****************************************************************************/ -/* GCompareFunc helper for sorting "best" connections. - * The function sorts connections in ascending timestamp order. - * That means an older connection (lower timestamp) goes before - * a newer one. - */ -gint -nm_settings_sort_connections (gconstpointer a, gconstpointer b) -{ - NMSettingsConnection *ac = (NMSettingsConnection *) a; - NMSettingsConnection *bc = (NMSettingsConnection *) b; - guint64 ats = 0, bts = 0; - - if (ac == bc) - return 0; - if (!ac) - return -1; - if (!bc) - return 1; - - /* In the future we may use connection priorities in addition to timestamps */ - nm_settings_connection_get_timestamp (ac, &ats); - nm_settings_connection_get_timestamp (bc, &bts); - - if (ats < bts) - return -1; - else if (ats > bts) - return 1; - return 0; -} - /** * nm_settings_get_best_connections: * @self: the #NMSetting @@ -2169,7 +2139,7 @@ nm_settings_get_best_connections (NMSettings *self, } /* List is sorted with oldest first */ - sorted = g_slist_insert_sorted (sorted, connection, nm_settings_sort_connections); + sorted = g_slist_insert_sorted (sorted, connection, (GCompareFunc) nm_settings_connection_cmp_timestamp); added++; if (max_requested && added > max_requested) { diff --git a/src/settings/nm-settings.h b/src/settings/nm-settings.h index c8a7ebae0..3e56bf388 100644 --- a/src/settings/nm-settings.h +++ b/src/settings/nm-settings.h @@ -126,8 +126,6 @@ void nm_settings_device_added (NMSettings *self, NMDevice *device); void nm_settings_device_removed (NMSettings *self, NMDevice *device, gboolean quitting); -gint nm_settings_sort_connections (gconstpointer a, gconstpointer b); - gboolean nm_settings_get_startup_complete (NMSettings *self); void nm_settings_set_transient_hostname (NMSettings *self,