[libgda] Added gda_connection_internal_get_provider_data_error()



commit 9bae3b41f18169949820d900812c79a10cf19e0f
Author: Vivien Malerba <malerba gnome-db org>
Date:   Fri Nov 11 19:07:14 2011 +0100

    Added gda_connection_internal_get_provider_data_error()

 doc/C/libgda-sections.txt       |    1 +
 libgda/gda-connection-private.h |    1 +
 libgda/gda-connection.c         |   22 +++++++++++++++++++++-
 libgda/libgda.symbols           |    1 +
 4 files changed, 24 insertions(+), 1 deletions(-)
---
diff --git a/doc/C/libgda-sections.txt b/doc/C/libgda-sections.txt
index eaafa91..7fa8c40 100644
--- a/doc/C/libgda-sections.txt
+++ b/doc/C/libgda-sections.txt
@@ -1587,6 +1587,7 @@ gda_server_provider_load_file_contents
 <SUBSECTION>
 gda_connection_internal_set_provider_data
 gda_connection_internal_get_provider_data
+gda_connection_internal_get_provider_data_error
 <SUBSECTION>
 gda_connection_add_event
 gda_connection_add_event_string
diff --git a/libgda/gda-connection-private.h b/libgda/gda-connection-private.h
index 59643cd..7e4b08a 100644
--- a/libgda/gda-connection-private.h
+++ b/libgda/gda-connection-private.h
@@ -30,6 +30,7 @@ G_BEGIN_DECLS
  */
 void     gda_connection_internal_set_provider_data (GdaConnection *cnc, gpointer data, GDestroyNotify destroy_func);
 gpointer gda_connection_internal_get_provider_data (GdaConnection *cnc);
+gpointer gda_connection_internal_get_provider_data_error (GdaConnection *cnc, GError **error);
 
 /*
  * Connection's events
diff --git a/libgda/gda-connection.c b/libgda/gda-connection.c
index c5fb960..857da47 100644
--- a/libgda/gda-connection.c
+++ b/libgda/gda-connection.c
@@ -6286,11 +6286,31 @@ gda_connection_internal_set_provider_data (GdaConnection *cnc, gpointer data, GD
 gpointer
 gda_connection_internal_get_provider_data (GdaConnection *cnc)
 {
+	return gda_connection_internal_get_provider_data_error (cnc, NULL);
+}
+
+/**
+ * gda_connection_internal_get_provider_data_error: (skip)
+ * @cnc: a #GdaConnection object
+ * @error: (allow-none): a place to store errors, or %NULL
+ *
+ * Get the opaque pointer previously set using gda_connection_internal_set_provider_data().
+ * If it's not set, then add a connection event and returns %NULL
+ *
+ * Returns: (allow-none): the pointer to the opaque structure set using gda_connection_internal_set_provider_data(), or %NULL
+ *
+ * Since: 5.0.2
+ */
+gpointer
+gda_connection_internal_get_provider_data_error (GdaConnection *cnc, GError **error)
+{
 	gpointer retval;
 	g_return_val_if_fail (GDA_IS_CONNECTION (cnc), NULL);
 
 	retval = cnc->priv->provider_data;
-
+	if (!retval)
+		g_set_error (error, GDA_CONNECTION_ERROR, GDA_CONNECTION_CLOSED_ERROR,
+                             _("Connection is closed"));
 	return retval;
 }
 
diff --git a/libgda/libgda.symbols b/libgda/libgda.symbols
index 5568c18..de1023c 100644
--- a/libgda/libgda.symbols
+++ b/libgda/libgda.symbols
@@ -974,6 +974,7 @@
 	gda_vconnection_hub_remove
 	gda_virtual_connection_get_type
 	gda_virtual_connection_internal_get_provider_data
+	gda_virtual_connection_internal_get_provider_data_error
 	gda_virtual_connection_internal_set_provider_data
 	gda_virtual_connection_open
 	gda_virtual_connection_open_extended



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