From 3d73177e05161aeb1ef1fd071098c7534429dd00 Mon Sep 17 00:00:00 2001 From: Bastien Nocera Date: Tue, 5 Jul 2022 11:00:06 +0200 Subject: net: Make it possible to defer session creation This will be used in the soup3 port. --- libs/net/grl-net-wc.c | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/libs/net/grl-net-wc.c b/libs/net/grl-net-wc.c index aa06bc8..fe4a914 100644 --- a/libs/net/grl-net-wc.c +++ b/libs/net/grl-net-wc.c @@ -85,6 +85,7 @@ struct _GrlNetWcPrivate { /* closure queue for delayed requests */ GQueue *pending; /* cache size in Mb */ + gboolean use_cache; guint cache_size; gchar *previous_data; }; @@ -395,7 +396,7 @@ grl_net_wc_get_property (GObject *object, g_value_set_uint (value, wc->priv->throttling); break; case PROP_CACHE: - g_value_set_boolean(value, cache_is_available (wc)); + g_value_set_boolean(value, wc->priv->use_cache); break; case PROP_CACHE_SIZE: g_value_set_uint (value, wc->priv->cache_size); @@ -1014,7 +1015,8 @@ grl_net_wc_set_log_level (GrlNetWc *self, g_return_if_fail (log_level <= 3); g_return_if_fail (GRL_IS_NET_WC (self)); - if (self->priv->log_level == log_level) + self->priv->log_level = log_level; + if (!self->priv->session) return; soup_session_remove_feature_by_type (self->priv->session, SOUP_TYPE_LOGGER); @@ -1040,6 +1042,10 @@ grl_net_wc_set_throttling (GrlNetWc *self, { g_return_if_fail (GRL_IS_NET_WC (self)); + self->priv->throttling = throttling; + if (!self->priv->session) + return; + if (throttling > 0) { /* max conns per host = 1 */ g_object_set (self->priv->session, @@ -1049,8 +1055,6 @@ grl_net_wc_set_throttling (GrlNetWc *self, g_object_set (self->priv->session, SOUP_SESSION_MAX_CONNS_PER_HOST, 2, NULL); } - - self->priv->throttling = throttling; } /** @@ -1070,6 +1074,10 @@ grl_net_wc_set_cache (GrlNetWc *self, { g_return_if_fail (GRL_IS_NET_WC (self)); + self->priv->use_cache = use_cache; + if (!self->priv->session) + return; + if (use_cache && !cache_is_available (self)) cache_up (self); else if (!use_cache && cache_is_available (self)) @@ -1092,10 +1100,9 @@ grl_net_wc_set_cache_size (GrlNetWc *self, { g_return_if_fail (GRL_IS_NET_WC (self)); - if (self->priv->cache_size == size) - return; - self->priv->cache_size = size; + if (!self->priv->session) + return; SoupSessionFeature *cache = soup_session_get_feature (self->priv->session, SOUP_TYPE_CACHE); if (!cache) -- cgit v1.2.1