hook gvariant vectors up to kdbus
[platform/upstream/glib.git] / gio / gtlsbackend.c
index a87137f..aa46e3a 100644 (file)
@@ -13,9 +13,7 @@
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General
- * Public License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place, Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Public License along with this library; if not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "config.h"
@@ -67,8 +65,9 @@
 /**
  * GTlsBackend:
  *
- * Type implemented by TLS #GIOModules to provide access to additional
- * TLS-related types.
+ * TLS (Transport Layer Security, aka SSL) backend. This is an
+ * internal type used to coordinate the different classes implemented
+ * by a TLS backend.
  *
  * Since: 2.28
  */
@@ -80,36 +79,6 @@ g_tls_backend_default_init (GTlsBackendInterface *iface)
 {
 }
 
-static gpointer
-get_default_tls_backend (gpointer arg)
-{
-  const char *use_this;
-  GList *extensions;
-  GIOExtensionPoint *ep;
-  GIOExtension *extension;
-
-  _g_io_modules_ensure_loaded ();
-
-  ep = g_io_extension_point_lookup (G_TLS_BACKEND_EXTENSION_POINT_NAME);
-
-  use_this = g_getenv ("GIO_USE_TLS");
-  if (use_this)
-    {
-      extension = g_io_extension_point_get_extension_by_name (ep, use_this);
-      if (extension)
-       return g_object_new (g_io_extension_get_type (extension), NULL);
-    }
-
-  extensions = g_io_extension_point_get_extensions (ep);
-  if (extensions)
-    {
-      extension = extensions->data;
-      return g_object_new (g_io_extension_get_type (extension), NULL);
-    }
-
-  return NULL;
-}
-
 /**
  * g_tls_backend_get_default:
  *
@@ -122,9 +91,8 @@ get_default_tls_backend (gpointer arg)
 GTlsBackend *
 g_tls_backend_get_default (void)
 {
-  static GOnce once_init = G_ONCE_INIT;
-
-  return g_once (&once_init, get_default_tls_backend, NULL);
+  return _g_io_module_get_default (G_TLS_BACKEND_EXTENSION_POINT_NAME,
+                                  "GIO_USE_TLS", NULL);
 }
 
 /**
@@ -134,7 +102,7 @@ g_tls_backend_get_default (void)
  * Checks if TLS is supported; if this returns %FALSE for the default
  * #GTlsBackend, it means no "real" TLS backend is available.
  *
- * Return value: whether or not TLS is supported
+ * Returns: whether or not TLS is supported
  *
  * Since: 2.28
  */
@@ -150,12 +118,35 @@ g_tls_backend_supports_tls (GTlsBackend *backend)
 }
 
 /**
+ * g_tls_backend_get_default_database:
+ * @backend: the #GTlsBackend
+ *
+ * Gets the default #GTlsDatabase used to verify TLS connections.
+ *
+ * Returns: (transfer full): the default database, which should be
+ *               unreffed when done.
+ *
+ * Since: 2.30
+ */
+GTlsDatabase *
+g_tls_backend_get_default_database (GTlsBackend *backend)
+{
+  g_return_val_if_fail (G_IS_TLS_BACKEND (backend), NULL);
+
+  /* This method was added later, so accept the (remote) possibility it can be NULL */
+  if (!G_TLS_BACKEND_GET_INTERFACE (backend)->get_default_database)
+    return NULL;
+
+  return G_TLS_BACKEND_GET_INTERFACE (backend)->get_default_database (backend);
+}
+
+/**
  * g_tls_backend_get_certificate_type:
  * @backend: the #GTlsBackend
  *
  * Gets the #GType of @backend's #GTlsCertificate implementation.
  *
- * Return value: the #GType of @backend's #GTlsCertificate
+ * Returns: the #GType of @backend's #GTlsCertificate
  *   implementation.
  *
  * Since: 2.28
@@ -172,7 +163,7 @@ g_tls_backend_get_certificate_type (GTlsBackend *backend)
  *
  * Gets the #GType of @backend's #GTlsClientConnection implementation.
  *
- * Return value: the #GType of @backend's #GTlsClientConnection
+ * Returns: the #GType of @backend's #GTlsClientConnection
  *   implementation.
  *
  * Since: 2.28
@@ -189,7 +180,7 @@ g_tls_backend_get_client_connection_type (GTlsBackend *backend)
  *
  * Gets the #GType of @backend's #GTlsServerConnection implementation.
  *
- * Return value: the #GType of @backend's #GTlsServerConnection
+ * Returns: the #GType of @backend's #GTlsServerConnection
  *   implementation.
  *
  * Since: 2.28
@@ -199,3 +190,25 @@ g_tls_backend_get_server_connection_type (GTlsBackend *backend)
 {
   return G_TLS_BACKEND_GET_INTERFACE (backend)->get_server_connection_type ();
 }
+
+/**
+ * g_tls_backend_get_file_database_type:
+ * @backend: the #GTlsBackend
+ *
+ * Gets the #GType of @backend's #GTlsFileDatabase implementation.
+ *
+ * Returns: the #GType of backend's #GTlsFileDatabase implementation.
+ *
+ * Since: 2.30
+ */
+GType
+g_tls_backend_get_file_database_type (GTlsBackend *backend)
+{
+  g_return_val_if_fail (G_IS_TLS_BACKEND (backend), 0);
+
+  /* This method was added later, so accept the (remote) possibility it can be NULL */
+  if (!G_TLS_BACKEND_GET_INTERFACE (backend)->get_file_database_type)
+    return 0;
+
+  return G_TLS_BACKEND_GET_INTERFACE (backend)->get_file_database_type ();
+}