From 414df5fdd335dd6fb2deaeec3b456b59d28ce994 Mon Sep 17 00:00:00 2001 From: Simon McVittie Date: Thu, 29 Aug 2013 16:48:40 +0100 Subject: [PATCH 14/16] _mcd_master_account_replace_transport: inline into caller and simplify There's only one transport plugin, it only has one transport, and its state is basically boolean, so we can delete a lot of code. --- src/kludge-transport.c | 23 ---------------------- src/mcd-account.c | 19 ++++++++++++------ src/mcd-master-priv.h | 2 -- src/mcd-master.c | 53 -------------------------------------------------- src/mcd-transport.c | 21 -------------------- src/mcd-transport.h | 5 ----- 6 files changed, 13 insertions(+), 110 deletions(-) diff --git a/src/kludge-transport.c b/src/kludge-transport.c index 664b8c3..5af099a 100644 --- a/src/kludge-transport.c +++ b/src/kludge-transport.c @@ -120,28 +120,6 @@ mcd_kludge_transport_get_transport_name ( return "i love the internet"; } -static McdTransportStatus -mcd_kludge_transport_get_transport_status ( - McdTransportPlugin *plugin, - McdTransport *transport) -{ - McdKludgeTransport *self = MCD_KLUDGE_TRANSPORT (plugin); - gboolean online; - - g_return_val_if_fail (MCD_IS_KLUDGE_TRANSPORT (plugin), - MCD_TRANSPORT_STATUS_DISCONNECTED); - g_return_val_if_fail (plugin == (McdTransportPlugin *) transport, - MCD_TRANSPORT_STATUS_DISCONNECTED); - - online = mcd_connectivity_monitor_is_online (self->priv->minotaur); - DEBUG ("we are allegedly %s", online ? "online" : "offline"); - - if (online) - return MCD_TRANSPORT_STATUS_CONNECTED; - else - return MCD_TRANSPORT_STATUS_DISCONNECTED; -} - static void transport_iface_init ( gpointer g_iface, @@ -151,7 +129,6 @@ transport_iface_init ( klass->get_transports = mcd_kludge_transport_get_transports; klass->get_transport_name = mcd_kludge_transport_get_transport_name; - klass->get_transport_status = mcd_kludge_transport_get_transport_status; } static McdTransportPlugin * diff --git a/src/mcd-account.c b/src/mcd-account.c index 5d4837d..658c186 100644 --- a/src/mcd-account.c +++ b/src/mcd-account.c @@ -230,7 +230,6 @@ void _mcd_account_maybe_autoconnect (McdAccount *account) { McdAccountPrivate *priv; - McdMaster *master; g_return_if_fail (MCD_IS_ACCOUNT (account)); priv = account->priv; @@ -240,12 +239,20 @@ _mcd_account_maybe_autoconnect (McdAccount *account) return; } - master = mcd_master_get_default (); - - if (!_mcd_master_account_replace_transport (master, account)) + if (_mcd_account_needs_dispatch (account)) { - DEBUG ("%s conditions not satisfied", priv->unique_name); - return; + DEBUG ("Always-dispatchable account %s needs no transport", + priv->unique_name); + } + else if (mcd_connectivity_monitor_is_online (priv->connectivity)) + { + DEBUG ("Account %s has connectivity, connecting", + priv->unique_name); + } + else + { + DEBUG ("Account %s needs connectivity, not connecting", + priv->unique_name); } DEBUG ("connecting account %s", priv->unique_name); diff --git a/src/mcd-master-priv.h b/src/mcd-master-priv.h index ab42c8a..bb491f2 100644 --- a/src/mcd-master-priv.h +++ b/src/mcd-master-priv.h @@ -32,8 +32,6 @@ G_BEGIN_DECLS G_GNUC_INTERNAL -gboolean _mcd_master_account_replace_transport (McdMaster *master, - McdAccount *account); McdManager *_mcd_master_lookup_manager (McdMaster *master, const gchar *unique_name); diff --git a/src/mcd-master.c b/src/mcd-master.c index 7a1f4ba..77182f1 100644 --- a/src/mcd-master.c +++ b/src/mcd-master.c @@ -384,59 +384,6 @@ mcd_master_register_transport (McdMaster *master, g_ptr_array_add (master->priv->transport_plugins, transport_plugin); } -gboolean -_mcd_master_account_replace_transport (McdMaster *master, - McdAccount *account) -{ - McdMasterPrivate *priv = master->priv; - gboolean connected = FALSE; - const gchar *name; - const guint n_plugins = priv->transport_plugins->len; - guint i; - - g_return_val_if_fail (MCD_IS_ACCOUNT (account), FALSE); - - /* no transport plugins, decision is always "go for it" */ - if (n_plugins == 0) - return TRUE; - - name = mcd_account_get_unique_name (account); - - if (_mcd_account_needs_dispatch (account)) - { - DEBUG ("Always-dispatchable account %s needs no transport", name); - return TRUE; - } - - DEBUG ("Checking %s [%u plugins]", name, n_plugins); - - for (i = 0; !connected && i < priv->transport_plugins->len; i++) - { - McdTransportPlugin *plugin; - const GList *transports; - - plugin = g_ptr_array_index (priv->transport_plugins, i); - transports = mcd_transport_plugin_get_transports (plugin); - - while (transports != NULL) - { - McdTransport *transport = transports->data; - McdTransportStatus status = - mcd_transport_get_status (plugin, transport); - - transports = g_list_next (transports); - - if (status != MCD_TRANSPORT_STATUS_CONNECTED) - continue; - - connected = TRUE; - break; - } - } - - return connected; -} - /* Milliseconds to wait for Connectivity coming back up before exiting MC */ #define EXIT_COUNTDOWN_TIME 5000 diff --git a/src/mcd-transport.c b/src/mcd-transport.c index 5e29d9e..15aee23 100644 --- a/src/mcd-transport.c +++ b/src/mcd-transport.c @@ -139,24 +139,3 @@ mcd_transport_get_name (McdTransportPlugin *plugin, McdTransport *transport) g_return_val_if_fail (iface->get_transport_name != NULL, NULL); return iface->get_transport_name (plugin, transport); } - -/** - * mcd_transport_get_status: - * @plugin: the #McdTransportPlugin. - * @transport: a #McdTransport. - * - * Gets the status of @transport. - * - * Returns: the #McdTransportStatus of the transport. - */ -McdTransportStatus -mcd_transport_get_status (McdTransportPlugin *plugin, McdTransport *transport) -{ - McdTransportPluginIface *iface; - - iface = MCD_TRANSPORT_PLUGIN_GET_IFACE (plugin); - g_return_val_if_fail (iface->get_transport_status != NULL, - MCD_TRANSPORT_STATUS_DISCONNECTED); - return iface->get_transport_status (plugin, transport); -} - diff --git a/src/mcd-transport.h b/src/mcd-transport.h index a7e5bc3..0f35d1e 100644 --- a/src/mcd-transport.h +++ b/src/mcd-transport.h @@ -55,9 +55,6 @@ struct _McdTransportPluginIface const GList * (*get_transports) (McdTransportPlugin *plugin); const gchar * (*get_transport_name) (McdTransportPlugin *plugin, McdTransport *transport); - McdTransportStatus (*get_transport_status) (McdTransportPlugin *plugin, - McdTransport *transport); - /* signals */ void (*status_changed) (McdTransportPlugin *plugin, McdTransport *transport, McdTransportStatus status); @@ -69,8 +66,6 @@ const GList *mcd_transport_plugin_get_transports (McdTransportPlugin *plugin); const gchar *mcd_transport_get_name (McdTransportPlugin *plugin, McdTransport *transport); -McdTransportStatus mcd_transport_get_status (McdTransportPlugin *plugin, - McdTransport *transport); G_END_DECLS #endif /* __MCD_TRANSPORT_PLUGIN_H__ */ -- 1.8.4.rc3