[grilo/wip/hadess/props: 2/2] net: Make it possible to defer session creation




commit 3d73177e05161aeb1ef1fd071098c7534429dd00
Author: Bastien Nocera <hadess hadess net>
Date:   Tue Jul 5 11:00:06 2022 +0200

    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)


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]