[glib-networking] Turn GTlsBackendGnutls into a final class



commit 74f04c015c187c2af60022fbeaf4d40b9ca2d3d8
Author: Michael Catanzaro <mcatanzaro igalia com>
Date:   Sat Dec 1 11:47:12 2018 -0600

    Turn GTlsBackendGnutls into a final class
    
    It no longer needs to be derivable because the PKC#11 backend was
    removed.

 tls/gnutls/gtlsbackend-gnutls.c | 42 +++++++++++++++--------------------------
 tls/gnutls/gtlsbackend-gnutls.h | 10 +---------
 2 files changed, 16 insertions(+), 36 deletions(-)
---
diff --git a/tls/gnutls/gtlsbackend-gnutls.c b/tls/gnutls/gtlsbackend-gnutls.c
index d060f37..a7e9942 100644
--- a/tls/gnutls/gtlsbackend-gnutls.c
+++ b/tls/gnutls/gtlsbackend-gnutls.c
@@ -36,16 +36,17 @@
 #include "gtlsfiledatabase-gnutls.h"
 #include "gtlsserverconnection-gnutls.h"
 
-typedef struct
+struct _GTlsBackendGnutls
 {
+  GObject parent_instance;
+
   GMutex mutex;
   GTlsDatabase *default_database;
-} GTlsBackendGnutlsPrivate;
+};
 
 static void g_tls_backend_gnutls_interface_init (GTlsBackendInterface *iface);
 
 G_DEFINE_DYNAMIC_TYPE_EXTENDED (GTlsBackendGnutls, g_tls_backend_gnutls, G_TYPE_OBJECT, 0,
-                                G_ADD_PRIVATE_DYNAMIC (GTlsBackendGnutls);
                                 G_IMPLEMENT_INTERFACE_DYNAMIC (G_TYPE_TLS_BACKEND,
                                                                g_tls_backend_gnutls_interface_init);)
 
@@ -83,8 +84,6 @@ static GOnce gnutls_inited = G_ONCE_INIT;
 static void
 g_tls_backend_gnutls_init (GTlsBackendGnutls *backend)
 {
-  GTlsBackendGnutlsPrivate *priv = g_tls_backend_gnutls_get_instance_private (backend);
-
   /* Once we call gtls_gnutls_init(), we can't allow the module to be
    * unloaded (since if gnutls gets unloaded but gcrypt doesn't, then
    * gcrypt will have dangling pointers to gnutls's mutex functions).
@@ -94,35 +93,26 @@ g_tls_backend_gnutls_init (GTlsBackendGnutls *backend)
    */
   g_once (&gnutls_inited, gtls_gnutls_init, NULL);
 
-  g_mutex_init (&priv->mutex);
+  g_mutex_init (&backend->mutex);
 }
 
 static void
 g_tls_backend_gnutls_finalize (GObject *object)
 {
   GTlsBackendGnutls *backend = G_TLS_BACKEND_GNUTLS (object);
-  GTlsBackendGnutlsPrivate *priv = g_tls_backend_gnutls_get_instance_private (backend);
 
-  if (priv->default_database)
-    g_object_unref (priv->default_database);
-  g_mutex_clear (&priv->mutex);
+  g_clear_object (&backend->default_database);
+  g_mutex_clear (&backend->mutex);
 
   G_OBJECT_CLASS (g_tls_backend_gnutls_parent_class)->finalize (object);
 }
 
-static GTlsDatabase*
-g_tls_backend_gnutls_real_create_database (GTlsBackendGnutls  *self,
-                                           GError            **error)
-{
-  return G_TLS_DATABASE (g_tls_database_gnutls_new (error));
-}
-
 static void
 g_tls_backend_gnutls_class_init (GTlsBackendGnutlsClass *backend_class)
 {
   GObjectClass *gobject_class = G_OBJECT_CLASS (backend_class);
+
   gobject_class->finalize = g_tls_backend_gnutls_finalize;
-  backend_class->create_database = g_tls_backend_gnutls_real_create_database;
 }
 
 static void
@@ -134,33 +124,31 @@ static GTlsDatabase*
 g_tls_backend_gnutls_get_default_database (GTlsBackend *backend)
 {
   GTlsBackendGnutls *self = G_TLS_BACKEND_GNUTLS (backend);
-  GTlsBackendGnutlsPrivate *priv = g_tls_backend_gnutls_get_instance_private (self);
   GTlsDatabase *result;
   GError *error = NULL;
 
-  g_mutex_lock (&priv->mutex);
+  g_mutex_lock (&self->mutex);
 
-  if (priv->default_database)
+  if (self->default_database)
     {
-      result = g_object_ref (priv->default_database);
+      result = g_object_ref (self->default_database);
     }
   else
     {
-      g_assert (G_TLS_BACKEND_GNUTLS_GET_CLASS (self)->create_database);
-      result = G_TLS_BACKEND_GNUTLS_GET_CLASS (self)->create_database (self, &error);
+      result = G_TLS_DATABASE (g_tls_database_gnutls_new (&error));
       if (error)
         {
-          g_warning ("couldn't load TLS file database: %s", error->message);
+          g_warning ("Failed to load TLS database: %s", error->message);
           g_clear_error (&error);
         }
       else
         {
           g_assert (result);
-          priv->default_database = g_object_ref (result);
+          self->default_database = g_object_ref (result);
         }
     }
 
-  g_mutex_unlock (&priv->mutex);
+  g_mutex_unlock (&self->mutex);
 
   return result;
 }
diff --git a/tls/gnutls/gtlsbackend-gnutls.h b/tls/gnutls/gtlsbackend-gnutls.h
index 09e8511..c9d2244 100644
--- a/tls/gnutls/gtlsbackend-gnutls.h
+++ b/tls/gnutls/gtlsbackend-gnutls.h
@@ -32,15 +32,7 @@ G_BEGIN_DECLS
 
 #define G_TYPE_TLS_BACKEND_GNUTLS            (g_tls_backend_gnutls_get_type ())
 
-G_DECLARE_DERIVABLE_TYPE (GTlsBackendGnutls, g_tls_backend_gnutls, G, TLS_BACKEND_GNUTLS, GObject)
-
-struct _GTlsBackendGnutlsClass
-{
-  GObjectClass parent_class;
-
-  GTlsDatabase*   (*create_database)      (GTlsBackendGnutls          *self,
-                                           GError                    **error);
-};
+G_DECLARE_FINAL_TYPE (GTlsBackendGnutls, g_tls_backend_gnutls, G, TLS_BACKEND_GNUTLS, GObject)
 
 void  g_tls_backend_gnutls_register (GIOModule *module);
 


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