X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Finclude%2Fgnunet_mysql_lib.h;h=c61bdcab184b1c33100543f02cf609e03f7c32a7;hb=0c4acf951c74b9a9479cc3cbf3cf45abcdd49451;hp=5673fe5020954c22874874e0367f6e91466acc3e;hpb=af8a130c49b2b6f00929ab161e7c160e3b0259b1;p=oweals%2Fgnunet.git diff --git a/src/include/gnunet_mysql_lib.h b/src/include/gnunet_mysql_lib.h index 5673fe502..c61bdcab1 100644 --- a/src/include/gnunet_mysql_lib.h +++ b/src/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 #ifdef __cplusplus extern "C" @@ -84,6 +83,31 @@ 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. *