multicast, psyc, psycstore, client_manager fixes
[oweals/gnunet.git] / src / include / gnunet_mysql_lib.h
index 5673fe5020954c22874874e0367f6e91466acc3e..96e3b9e49bc0b9ff90552f12c430b29b89dea849 100644 (file)
@@ -1,6 +1,6 @@
 /*
      This file is part of GNUnet
-     (C) 2012 Christian Grothoff (and other contributing authors)
+     Copyright (C) 2012 Christian Grothoff (and other contributing authors)
 
      GNUnet is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published
@@ -14,8 +14,8 @@
 
      You should have received a copy of the GNU General Public License
      along with GNUnet; see the file COPYING.  If not, write to the
-     Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-     Boston, MA 02111-1307, USA.
+     Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+     Boston, MA 02110-1301, USA.
 */
 /**
  * @file include/gnunet_mysql_lib.h
@@ -26,8 +26,7 @@
 #define GNUNET_MYSQL_LIB_H
 
 #include "gnunet_util_lib.h"
-#include "gnunet_bandwidth_lib.h"
-#include "gnunet_statistics_service.h"
+#include <mysql/mysql.h>
 
 #ifdef __cplusplus
 extern "C"
@@ -77,13 +76,38 @@ GNUNET_MYSQL_context_create (const struct GNUNET_CONFIGURATION_Handle *cfg,
 
 /**
  * Destroy a mysql context.  Also frees all associated prepared statements.
- * 
+ *
  * @param mc context to destroy
  */
 void
 GNUNET_MYSQL_context_destroy (struct GNUNET_MYSQL_Context *mc);
 
 
+/**
+ * Close database connection and all prepared statements (we got a DB
+ * error).  The connection will automatically be re-opened and
+ * statements will be re-prepared if they are needed again later.
+ *
+ * @param mc mysql context
+ */
+void
+GNUNET_MYSQL_statements_invalidate (struct GNUNET_MYSQL_Context *mc);
+
+
+/**
+ * Get internal handle for a prepared statement.  This function should rarely
+ * be used, and if, with caution!  On failures during the interaction with
+ * the handle, you must call 'GNUNET_MYSQL_statements_invalidate'!
+ *
+ * @param mc mysql context
+ * @param sh prepared statement to introspect
+ * @return MySQL statement handle, NULL on error
+ */
+MYSQL_STMT *
+GNUNET_MYSQL_statement_get_stmt (struct GNUNET_MYSQL_Context *mc,
+                                struct GNUNET_MYSQL_StatementHandle *sh);
+
+
 /**
  * Prepare a statement.  Prepared statements are automatically discarded
  * when the MySQL context is destroyed.
@@ -134,6 +158,32 @@ GNUNET_MYSQL_statement_run_prepared_select (struct GNUNET_MYSQL_Context *mc,
                                            void *processor_cls, ...);
 
 
+/**
+ * Run a prepared SELECT statement.
+ *
+ * @param mc mysql context
+ * @param s statement to run
+ * @param result_size number of elements in results array
+ * @param results pointer to already initialized MYSQL_BIND
+ *        array (of sufficient size) for passing results
+ * @param processor function to call on each result
+ * @param processor_cls extra argument to processor
+ * @param ap pairs and triplets of "MYSQL_TYPE_XXX" keys and their respective
+ *        values (size + buffer-reference for pointers); terminated
+ *        with "-1"
+ * @return GNUNET_SYSERR on error, otherwise
+ *         the number of successfully affected (or queried) rows
+ */
+int
+GNUNET_MYSQL_statement_run_prepared_select_va (struct GNUNET_MYSQL_Context *mc,
+                                              struct GNUNET_MYSQL_StatementHandle *s,
+                                              unsigned int result_size,
+                                              MYSQL_BIND * results,
+                                              GNUNET_MYSQL_DataProcessor processor,
+                                              void *processor_cls,
+                                              va_list ap);
+
+
 /**
  * Run a prepared statement that does NOT produce results.
  *