[glib-networking/mcatanzaro/tls-thread: 3/19] progress



commit 80f983bbcd8bd4c3e198279cd5baff7228f525ee
Author: Michael Catanzaro <mcatanzaro igalia com>
Date:   Wed Jul 24 12:42:08 2019 -0500

    progress

 tls/base/gtlsconnection-base.c |  4 +++
 tls/base/gtlsthread.c          | 67 ++++++++++++++++++++++++++++++++++++++++++
 tls/base/gtlsthread.h          | 14 +++++----
 3 files changed, 79 insertions(+), 6 deletions(-)
---
diff --git a/tls/base/gtlsconnection-base.c b/tls/base/gtlsconnection-base.c
index 6a1b84f..fd424a0 100644
--- a/tls/base/gtlsconnection-base.c
+++ b/tls/base/gtlsconnection-base.c
@@ -227,6 +227,8 @@ g_tls_connection_base_init (GTlsConnectionBase *tls)
 {
   GTlsConnectionBasePrivate *priv = g_tls_connection_base_get_instance_private (tls);
 
+  priv->thread = g_tls_thread_new (tls);
+
   priv->need_handshake = TRUE;
   priv->database_is_unset = TRUE;
   priv->is_system_certdb = TRUE;
@@ -245,6 +247,8 @@ g_tls_connection_base_finalize (GObject *object)
   GTlsConnectionBase *tls = G_TLS_CONNECTION_BASE (object);
   GTlsConnectionBasePrivate *priv = g_tls_connection_base_get_instance_private (tls);
 
+  g_clear_object (&priv->thread);
+
   g_clear_object (&priv->base_io_stream);
   g_clear_object (&priv->base_socket);
 
diff --git a/tls/base/gtlsthread.c b/tls/base/gtlsthread.c
index c7cd7bc..027ed6a 100644
--- a/tls/base/gtlsthread.c
+++ b/tls/base/gtlsthread.c
@@ -79,6 +79,12 @@ typedef struct {
   gint result;
 } GTlsThreadOperation;
 
+enum
+{
+  PROP_0,
+  PROP_CONNECTION,
+};
+
 G_DEFINE_TYPE (GTlsThread, g_tls_thread, G_TYPE_TLS_THREAD)
 
 static GTlsThreadOperation *
@@ -187,6 +193,53 @@ tls_thread (gpointer data)
   return NULL;
 }
 
+static void
+g_tls_thread_get_property (GObject    *object,
+                           guint       prop_id,
+                           GValue     *value,
+                           GParamSpec *pspec)
+{
+  GTlsThread *self = G_TLS_THREAD (object);
+  GTlsBackend *backend;
+
+  switch (prop_id)
+    {
+    case PROP_BASE_IO_STREAM:
+      g_value_set_object (value, priv->base_io_stream);
+      break;
+
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+    }
+}
+
+static void
+g_tls_connection_base_set_property (GObject      *object,
+                                    guint         prop_id,
+                                    const GValue *value,
+                                    GParamSpec   *pspec)
+{
+  GTlsConnectionBase *tls = G_TLS_CONNECTION_BASE (object);
+  GTlsConnectionBasePrivate *priv = g_tls_connection_base_get_instance_private (tls);
+  GInputStream *istream;
+  GOutputStream *ostream;
+  gboolean system_certdb;
+  GTlsBackend *backend;
+
+  switch (prop_id)
+    {
+    case PROP_BASE_SOCKET:
+      g_assert (!g_value_get_object (value) || !priv->base_io_stream);
+
+      g_clear_object (&priv->base_socket);
+      priv->base_socket = g_value_dup_object (value);
+      break;
+
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+    }
+}
+
 static void
 g_tls_thread_init (GTlsThread *self)
 {
@@ -215,4 +268,18 @@ g_tls_thread_class_init (GTlsThreadClass *klass)
   GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
 
   gobject_class->dispose = g_tls_thread_dispose;
+  gobject_class->get_property = g_tls_thread_get_property;
+  gobject_class->set_property = g_tls_thread_set_property;
+}
+
+GTlsThread *
+g_tls_thread_new (GTlsConnectionBase *tls)
+{
+  GTlsThread *thread;
+
+  thread = g_object_new (G_TYPE_TLS_THREAD,
+                         "connection", tls,
+                         NULL);
+
+  return thread;
 }
diff --git a/tls/base/gtlsthread.h b/tls/base/gtlsthread.h
index bc11ced..cf56dd6 100644
--- a/tls/base/gtlsthread.h
+++ b/tls/base/gtlsthread.h
@@ -34,11 +34,13 @@ G_BEGIN_DECLS
 
 G_DECLARE_FINAL_TYPE (GTlsThread, g_tls_thread, G, TLS_THREAD, GObject)
 
-gssize g_tls_thread_base_read (GTlsThread    *self,
-                               void          *buffer,
-                               gsize          size,
-                               gint64         timeout,
-                               GCancellable  *cancellable,
-                               GError       **error);
+GTlsThread *g_tls_thread_new       (GTlsConnectionBase *tls);
+
+gssize      g_tls_thread_base_read (GTlsThread    *self,
+                                    void          *buffer,
+                                    gsize          size,
+                                    gint64         timeout,
+                                    GCancellable  *cancellable,
+                                    GError       **error);
 
 G_END_DECLS


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