[glib-networking/mcatanzaro/tls-thread: 3/19] progress
- From: Michael Catanzaro <mcatanzaro src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib-networking/mcatanzaro/tls-thread: 3/19] progress
- Date: Sat, 10 Aug 2019 00:42:53 +0000 (UTC)
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]