aboutsummaryrefslogtreecommitdiff
path: root/src/regex
diff options
context:
space:
mode:
authorChristophe Genevey Metat <genevey.christophe@gmail.com>2016-06-27 14:39:42 +0000
committerChristophe Genevey Metat <genevey.christophe@gmail.com>2016-06-27 14:39:42 +0000
commit6f9c566127d0737ecd529f458dc28b7fc02e6eb9 (patch)
treefffca5ca50c684904ad498443a0862f8b0cab9b0 /src/regex
parent71a483b672933fb1de45aebb7869a06bc63f09be (diff)
adapt gnunet-regex-simulation-profiler to libgnunetmy
Diffstat (limited to 'src/regex')
-rw-r--r--src/regex/Makefile.am1
-rw-r--r--src/regex/gnunet-regex-simulation-profiler.c131
2 files changed, 60 insertions, 72 deletions
diff --git a/src/regex/Makefile.am b/src/regex/Makefile.am
index 6204a47d8e..7f0fb707f4 100644
--- a/src/regex/Makefile.am
+++ b/src/regex/Makefile.am
@@ -94,6 +94,7 @@ gnunet_regex_simulation_profiler_LDADD = \
$(top_builddir)/src/util/libgnunetutil.la \
libgnunetregex_internal.a \
$(top_builddir)/src/dht/libgnunetdht.la \
+ $(top_builddir)/src/my/libgnunetmy.la \
$(top_builddir)/src/mysql/libgnunetmysql.la
endif
diff --git a/src/regex/gnunet-regex-simulation-profiler.c b/src/regex/gnunet-regex-simulation-profiler.c
index 585d528b76..d9d02bca74 100644
--- a/src/regex/gnunet-regex-simulation-profiler.c
+++ b/src/regex/gnunet-regex-simulation-profiler.c
@@ -23,6 +23,7 @@
* @brief Regex profiler that dumps all DFAs into a database instead of
* using the DHT (with cadet).
* @author Maximilian Szengel
+ * @author Christophe Genevey
*
*/
@@ -30,6 +31,7 @@
#include "gnunet_util_lib.h"
#include "regex_internal_lib.h"
#include "gnunet_mysql_lib.h"
+#include "gnunet_my_lib.h"
#include <mysql/mysql.h>
/**
@@ -302,25 +304,6 @@ do_abort (void *cls)
GNUNET_SCHEDULER_shutdown ();
}
-
-/**
- * Dummy function for prepared select. Always returns #GNUNET_OK.
- *
- * @param cls closure
- * @param num_values number of values.
- * @param values returned values from select stmt.
- *
- * @return #GNUNET_OK
- */
-static int
-return_ok (void *cls,
- unsigned int num_values,
- MYSQL_BIND * values)
-{
- return GNUNET_OK;
-}
-
-
/**
* Iterator over all states that inserts each state into the MySQL db.
*
@@ -333,44 +316,37 @@ return_ok (void *cls,
*/
static void
regex_iterator (void *cls,
- const struct GNUNET_HashCode *key,
- const char *proof,
+ const struct GNUNET_HashCode *key,
+ const char *proof,
int accepting,
- unsigned int num_edges,
+ unsigned int num_edges,
const struct REGEX_BLOCK_Edge *edges)
{
unsigned int i;
int result;
- unsigned long k_length;
- unsigned long e_length;
- unsigned long d_length;
- MYSQL_BIND rbind[1];
- unsigned long long total;
+
+ uint32_t iaccepting = (uint32_t)accepting;
+ uint64_t total;
GNUNET_assert (NULL != mysql_ctx);
for (i = 0; i < num_edges; i++)
{
- k_length = sizeof (struct GNUNET_HashCode);
- e_length = strlen (edges[i].label);
- d_length = sizeof (struct GNUNET_HashCode);
- memset (rbind, 0, sizeof (rbind));
- total = -1;
- rbind[0].buffer_type = MYSQL_TYPE_LONGLONG;
- rbind[0].buffer = &total;
- rbind[0].is_unsigned = GNUNET_YES;
-
- result =
- GNUNET_MYSQL_statement_run_prepared_select (select_stmt_handle, 1,
- rbind, &return_ok, NULL,
- MYSQL_TYPE_BLOB, key,
- sizeof (struct
- GNUNET_HashCode),
- &k_length,
- MYSQL_TYPE_STRING,
- edges[i].label,
- strlen (edges[i].label),
- &e_length, -1);
+ struct GNUNET_MY_QueryParam params_select[] = {
+ GNUNET_MY_query_param_auto_from_type (key),
+ GNUNET_MY_query_param_fixed_size(edges[i].label, strlen (edges[i].label)),
+ GNUNET_MY_query_param_end
+ };
+
+ struct GNUNET_MY_ResultSpec results_select[] = {
+ GNUNET_MY_result_spec_uint64 (&total),
+ GNUNET_MY_result_spec_end
+ };
+
+ result =
+ GNUNET_MY_exec_prepared (mysql_ctx,
+ select_stmt_handle,
+ params_select);
if (GNUNET_SYSERR == result)
{
@@ -380,24 +356,36 @@ regex_iterator (void *cls,
return;
}
+ result =
+ GNUNET_MY_extract_result (select_stmt_handle,
+ results_select);
+
+ if (GNUNET_SYSERR == result)
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
+ "Error extracting result mysql select statement\n");
+ GNUNET_SCHEDULER_add_now (&do_abort, NULL);
+ return;
+ }
+
if (-1 != total && total > 0)
{
GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Total: %llu (%s, %s)\n", total,
GNUNET_h2s (key), edges[i].label);
}
- result =
- GNUNET_MYSQL_statement_run_prepared (stmt_handle, NULL,
- MYSQL_TYPE_BLOB, key,
- sizeof (struct GNUNET_HashCode),
- &k_length, MYSQL_TYPE_STRING,
- edges[i].label,
- strlen (edges[i].label), &e_length,
- MYSQL_TYPE_BLOB,
- &edges[i].destination,
- sizeof (struct GNUNET_HashCode),
- &d_length, MYSQL_TYPE_LONG,
- &accepting, GNUNET_YES, -1);
+ struct GNUNET_MY_QueryParam params_stmt[] = {
+ GNUNET_MY_query_param_auto_from_type (&key),
+ GNUNET_MY_query_param_fixed_size (edges[i].label, strlen (edges[i].label)),
+ GNUNET_MY_query_param_auto_from_type (&edges[i].destination),
+ GNUNET_MY_query_param_uint32 (&iaccepting),
+ GNUNET_MY_query_param_end
+ };
+
+ result =
+ GNUNET_MY_exec_prepared (mysql_ctx,
+ stmt_handle,
+ params_stmt);
if (0 == result)
{
@@ -426,19 +414,18 @@ regex_iterator (void *cls,
if (0 == num_edges)
{
- k_length = sizeof (struct GNUNET_HashCode);
- e_length = 0;
- d_length = 0;
-
- result =
- GNUNET_MYSQL_statement_run_prepared (stmt_handle, NULL,
- MYSQL_TYPE_BLOB, key,
- sizeof (struct GNUNET_HashCode),
- &k_length, MYSQL_TYPE_STRING, NULL,
- 0, &e_length, MYSQL_TYPE_BLOB,
- NULL, 0, &d_length,
- MYSQL_TYPE_LONG, &accepting,
- GNUNET_YES, -1);
+ struct GNUNET_MY_QueryParam params_stmt[] = {
+ GNUNET_MY_query_param_auto_from_type (key),
+ GNUNET_MY_query_param_fixed_size (NULL, 0),
+ GNUNET_MY_query_param_auto_from_type (NULL),
+ GNUNET_MY_query_param_uint32 (&iaccepting),
+ GNUNET_MY_query_param_end
+ };
+
+ result =
+ GNUNET_MY_exec_prepared(mysql_ctx,
+ stmt_handle,
+ params_stmt);
if (1 != result && 0 != result)
{