NMFirewallManager * nm_firewall_manager_get (void) { static NMFirewallManager *singleton = NULL; if (G_UNLIKELY (!singleton)) { singleton = NM_FIREWALL_MANAGER (g_object_new (NM_TYPE_FIREWALL_MANAGER, NULL)); g_assert (singleton); } return singleton; }
NMFirewallManager * nm_firewall_manager_get (void) { static NMFirewallManager *singleton = NULL; if (!singleton) singleton = NM_FIREWALL_MANAGER (g_object_new (NM_TYPE_FIREWALL_MANAGER, NULL)); else g_object_ref (singleton); g_assert (singleton); return singleton; }
static void name_owner_changed (GObject *object, GParamSpec *pspec, gpointer user_data) { NMFirewallManager *self = NM_FIREWALL_MANAGER (user_data); gs_free char *owner = NULL; owner = g_dbus_proxy_get_name_owner (G_DBUS_PROXY (object)); if (owner) { _LOGD (NULL, "firewall started"); set_running (self, TRUE); g_signal_emit (self, signals[STARTED], 0); } else { _LOGD (NULL, "firewall stopped"); set_running (self, FALSE); } }
static void dispose (GObject *object) { NMFirewallManager *self = NM_FIREWALL_MANAGER (object); NMFirewallManagerPrivate *priv = NM_FIREWALL_MANAGER_GET_PRIVATE (self); if (priv->pending_calls) { /* as every pending operation takes a reference to the manager, * we don't expect pending operations at this point. */ g_assert (g_hash_table_size (priv->pending_calls) == 0); g_hash_table_unref (priv->pending_calls); priv->pending_calls = NULL; } g_clear_object (&priv->proxy); /* Chain up to the parent class */ G_OBJECT_CLASS (nm_firewall_manager_parent_class)->dispose (object); }
static void name_owner_changed (NMDBusManager *dbus_mgr, const char *name, const char *old_owner, const char *new_owner, gpointer user_data) { NMFirewallManager *self = NM_FIREWALL_MANAGER (user_data); gboolean old_owner_good = (old_owner && strlen (old_owner)); gboolean new_owner_good = (new_owner && strlen (new_owner)); /* We only care about the firewall here */ if (strcmp (FIREWALL_DBUS_SERVICE, name) != 0) return; if (!old_owner_good && new_owner_good) { nm_log_dbg (LOGD_FIREWALL, "firewall started"); set_running (self, TRUE); g_signal_emit (self, signals[STARTED], 0); } else if (old_owner_good && !new_owner_good) { nm_log_dbg (LOGD_FIREWALL, "firewall stopped"); set_running (self, FALSE); } }