[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] [gnunet] branch master updated: designing SQ-lib API
From: |
gnunet |
Subject: |
[GNUnet-SVN] [gnunet] branch master updated: designing SQ-lib API |
Date: |
Mon, 27 Feb 2017 00:23:49 +0100 |
This is an automated email from the git hooks/post-receive script.
grothoff pushed a commit to branch master
in repository gnunet.
The following commit(s) were added to refs/heads/master by this push:
new befd2f9fc designing SQ-lib API
befd2f9fc is described below
commit befd2f9fc787c2ac75790b06e1601f2f65305375
Author: Christian Grothoff <address@hidden>
AuthorDate: Mon Feb 27 00:23:34 2017 +0100
designing SQ-lib API
---
src/include/Makefile.am | 1 +
src/include/gnunet_mq_lib.h | 4 +-
src/include/gnunet_mysql_lib.h | 14 +-
src/include/gnunet_pq_lib.h | 6 +-
src/include/{gnunet_pq_lib.h => gnunet_sq_lib.h} | 192 +++++++++--------------
5 files changed, 90 insertions(+), 127 deletions(-)
diff --git a/src/include/Makefile.am b/src/include/Makefile.am
index bf3ffe482..4fb2577fd 100644
--- a/src/include/Makefile.am
+++ b/src/include/Makefile.am
@@ -114,6 +114,7 @@ gnunetinclude_HEADERS = \
gnunet_signatures.h \
gnunet_social_service.h \
gnunet_speaker_lib.h \
+ gnunet_sq_lib.h \
gnunet_statistics_service.h \
gnunet_strings_lib.h \
gnunet_testbed_service.h \
diff --git a/src/include/gnunet_mq_lib.h b/src/include/gnunet_mq_lib.h
index cb4affe1e..b05128ccc 100644
--- a/src/include/gnunet_mq_lib.h
+++ b/src/include/gnunet_mq_lib.h
@@ -32,8 +32,8 @@
*
* @{
*/
-#ifndef GNUNET_MQ_H
-#define GNUNET_MQ_H
+#ifndef GNUNET_MQ_LIB_H
+#define GNUNET_MQ_LIB_H
/**
diff --git a/src/include/gnunet_mysql_lib.h b/src/include/gnunet_mysql_lib.h
index fc6f42f86..6a1e5b3ac 100644
--- a/src/include/gnunet_mysql_lib.h
+++ b/src/include/gnunet_mysql_lib.h
@@ -61,10 +61,12 @@ struct GNUNET_MYSQL_StatementHandle;
* @param cls user-defined argument
* @param num_values number of elements in values
* @param values values returned by MySQL
- * @return GNUNET_OK to continue iterating, GNUNET_SYSERR to abort
+ * @return #GNUNET_OK to continue iterating, #GNUNET_SYSERR to abort
*/
-typedef int (*GNUNET_MYSQL_DataProcessor) (void *cls, unsigned int num_values,
- MYSQL_BIND * values);
+typedef int
+(*GNUNET_MYSQL_DataProcessor) (void *cls,
+ unsigned int num_values,
+ MYSQL_BIND * values);
/**
@@ -102,7 +104,7 @@ 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'!
+ * the handle, you must call #GNUNET_MYSQL_statements_invalidate()!
*
* @param sh prepared statement to introspect
* @return MySQL statement handle, NULL on error
@@ -129,8 +131,8 @@ GNUNET_MYSQL_statement_prepare (struct GNUNET_MYSQL_Context
*mc,
*
* @param mc mysql context
* @param sql SQL statement to run
- * @return GNUNET_OK on success
- * GNUNET_SYSERR if there was a problem
+ * @return #GNUNET_OK on success
+ * #GNUNET_SYSERR if there was a problem
*/
int
GNUNET_MYSQL_statement_run (struct GNUNET_MYSQL_Context *mc,
diff --git a/src/include/gnunet_pq_lib.h b/src/include/gnunet_pq_lib.h
index 33a3e5425..e8180f286 100644
--- a/src/include/gnunet_pq_lib.h
+++ b/src/include/gnunet_pq_lib.h
@@ -15,11 +15,11 @@
*/
/**
* @file include/gnunet_pq_lib.h
- * @brief helper functions for DB interactions
+ * @brief helper functions for Postgres DB interactions
* @author Christian Grothoff
*/
-#ifndef GNUNET_PQ_LIB_H_
-#define GNUNET_PQ_LIB_H_
+#ifndef GNUNET_PQ_LIB_H
+#define GNUNET_PQ_LIB_H
#include <libpq-fe.h>
#include "gnunet_util_lib.h"
diff --git a/src/include/gnunet_pq_lib.h b/src/include/gnunet_sq_lib.h
similarity index 60%
copy from src/include/gnunet_pq_lib.h
copy to src/include/gnunet_sq_lib.h
index 33a3e5425..a068650ac 100644
--- a/src/include/gnunet_pq_lib.h
+++ b/src/include/gnunet_sq_lib.h
@@ -1,6 +1,6 @@
/*
This file is part of GNUnet
- Copyright (C) 2016 GNUnet e.V.
+ Copyright (C) 2017 GNUnet e.V.
GNUnet is free software; you can redistribute it and/or modify it under the
terms of the GNU General Public License as published by the Free Software
@@ -14,14 +14,14 @@
GNUnet; see the file COPYING. If not, If not, see
<http://www.gnu.org/licenses/>
*/
/**
- * @file include/gnunet_pq_lib.h
- * @brief helper functions for DB interactions
+ * @file include/gnunet_sq_lib.h
+ * @brief helper functions for Sqlite3 DB interactions
* @author Christian Grothoff
*/
-#ifndef GNUNET_PQ_LIB_H_
-#define GNUNET_PQ_LIB_H_
+#ifndef GNUNET_SQ_LIB_H
+#define GNUNET_SQ_LIB_H
-#include <libpq-fe.h>
+#include <sqlite/sqlite3.h>
#include "gnunet_util_lib.h"
@@ -31,36 +31,29 @@
* @param cls closure
* @param data pointer to input argument
* @param data_len number of bytes in @a data (if applicable)
- * @param[out] param_values SQL data to set
- * @param[out] param_lengths SQL length data to set
- * @param[out] param_formats SQL format data to set
- * @param param_length number of entries available in the @a param_values, @a
param_lengths and @a param_formats arrays
- * @param[out] scratch buffer for dynamic allocations (to be done via
#GNUNET_malloc()
- * @param scratch_length number of entries left in @a scratch
- * @return -1 on error, number of offsets used in @a scratch otherwise
+ * @param stmt sqlite statement to bind parameters for
+ * @param off offset of the argument to bind in @a stmt, numbered from 1,
+ * so immediately suitable for passing to `sqlite3_bind`-functions.
+ * @return #GNUNET_SYSERR on error, #GNUNET_OK on success
*/
typedef int
-(*GNUNET_PQ_QueryConverter)(void *cls,
+(*GNUNET_SQ_QueryConverter)(void *cls,
const void *data,
size_t data_len,
- void *param_values[],
- int param_lengths[],
- int param_formats[],
- unsigned int param_length,
- void *scratch[],
- unsigned int scratch_length);
+ sqlite3_stmt *stmt,
+ unsigned int off);
/**
* @brief Description of a DB query parameter.
*/
-struct GNUNET_PQ_QueryParam
+struct GNUNET_SQ_QueryParam
{
/**
* Function for how to handle this type of entry.
*/
- GNUNET_PQ_QueryConverter conv;
+ GNUNET_SQ_QueryConverter conv;
/**
* Closure for @e conv.
@@ -87,7 +80,7 @@ struct GNUNET_PQ_QueryParam
/**
* End of query parameter specification.
*/
-#define GNUNET_PQ_query_param_end { NULL, NULL, NULL, 0, 0 }
+#define GNUNET_SQ_query_param_end { NULL, NULL, NULL, 0, 0 }
/**
@@ -97,8 +90,8 @@ struct GNUNET_PQ_QueryParam
* @param ptr pointer to the query parameter to pass
* @oaran ptr_size number of bytes in @a ptr
*/
-struct GNUNET_PQ_QueryParam
-GNUNET_PQ_query_param_fixed_size (const void *ptr,
+struct GNUNET_SQ_QueryParam
+GNUNET_SQ_query_param_fixed_size (const void *ptr,
size_t ptr_size);
@@ -108,8 +101,8 @@ GNUNET_PQ_query_param_fixed_size (const void *ptr,
*
* @param ptr pointer to the string query parameter to pass
*/
-struct GNUNET_PQ_QueryParam
-GNUNET_PQ_query_param_string (const char *ptr);
+struct GNUNET_SQ_QueryParam
+GNUNET_SQ_query_param_string (const char *ptr);
/**
@@ -118,7 +111,7 @@ GNUNET_PQ_query_param_string (const char *ptr);
*
* @param x pointer to the query parameter to pass.
*/
-#define GNUNET_PQ_query_param_auto_from_type(x)
GNUNET_PQ_query_param_fixed_size ((x), sizeof (*(x)))
+#define GNUNET_SQ_query_param_auto_from_type(x)
GNUNET_SQ_query_param_fixed_size ((x), sizeof (*(x)))
/**
@@ -127,8 +120,8 @@ GNUNET_PQ_query_param_string (const char *ptr);
*
* @param x the query parameter to pass.
*/
-struct GNUNET_PQ_QueryParam
-GNUNET_PQ_query_param_rsa_public_key (const struct GNUNET_CRYPTO_RsaPublicKey
*x);
+struct GNUNET_SQ_QueryParam
+GNUNET_SQ_query_param_rsa_public_key (const struct GNUNET_CRYPTO_RsaPublicKey
*x);
/**
@@ -137,8 +130,8 @@ GNUNET_PQ_query_param_rsa_public_key (const struct
GNUNET_CRYPTO_RsaPublicKey *x
*
* @param x the query parameter to pass
*/
-struct GNUNET_PQ_QueryParam
-GNUNET_PQ_query_param_rsa_signature (const struct GNUNET_CRYPTO_RsaSignature
*x);
+struct GNUNET_SQ_QueryParam
+GNUNET_SQ_query_param_rsa_signature (const struct GNUNET_CRYPTO_RsaSignature
*x);
/**
@@ -147,8 +140,8 @@ GNUNET_PQ_query_param_rsa_signature (const struct
GNUNET_CRYPTO_RsaSignature *x)
*
* @param x pointer to the query parameter to pass
*/
-struct GNUNET_PQ_QueryParam
-GNUNET_PQ_query_param_absolute_time (const struct GNUNET_TIME_Absolute *x);
+struct GNUNET_SQ_QueryParam
+GNUNET_SQ_query_param_absolute_time (const struct GNUNET_TIME_Absolute *x);
/**
@@ -157,8 +150,8 @@ GNUNET_PQ_query_param_absolute_time (const struct
GNUNET_TIME_Absolute *x);
*
* @param x pointer to the query parameter to pass
*/
-struct GNUNET_PQ_QueryParam
-GNUNET_PQ_query_param_absolute_time_nbo (const struct GNUNET_TIME_AbsoluteNBO
*x);
+struct GNUNET_SQ_QueryParam
+GNUNET_SQ_query_param_absolute_time_nbo (const struct GNUNET_TIME_AbsoluteNBO
*x);
/**
@@ -166,8 +159,8 @@ GNUNET_PQ_query_param_absolute_time_nbo (const struct
GNUNET_TIME_AbsoluteNBO *x
*
* @param x pointer to the query parameter to pass
*/
-struct GNUNET_PQ_QueryParam
-GNUNET_PQ_query_param_uint16 (const uint16_t *x);
+struct GNUNET_SQ_QueryParam
+GNUNET_SQ_query_param_uint16 (const uint16_t *x);
/**
@@ -175,8 +168,8 @@ GNUNET_PQ_query_param_uint16 (const uint16_t *x);
*
* @param x pointer to the query parameter to pass
*/
-struct GNUNET_PQ_QueryParam
-GNUNET_PQ_query_param_uint32 (const uint32_t *x);
+struct GNUNET_SQ_QueryParam
+GNUNET_SQ_query_param_uint32 (const uint32_t *x);
/**
@@ -184,8 +177,8 @@ GNUNET_PQ_query_param_uint32 (const uint32_t *x);
*
* @param x pointer to the query parameter to pass
*/
-struct GNUNET_PQ_QueryParam
-GNUNET_PQ_query_param_uint64 (const uint64_t *x);
+struct GNUNET_SQ_QueryParam
+GNUNET_SQ_query_param_uint64 (const uint64_t *x);
/**
@@ -194,7 +187,6 @@ GNUNET_PQ_query_param_uint64 (const uint64_t *x);
* @param cls closure
* @param result where to extract data from
* @param int row to extract data from
- * @param fname name (or prefix) of the fields to extract from
* @param[in,out] dst_size where to store size of result, may be NULL
* @param[out] dst where to store the result
* @return
@@ -202,42 +194,41 @@ GNUNET_PQ_query_param_uint64 (const uint64_t *x);
* #GNUNET_SYSERR if a result was invalid (non-existing field or NULL)
*/
typedef int
-(*GNUNET_PQ_ResultConverter)(void *cls,
- PGresult *result,
+(*GNUNET_SQ_ResultConverter)(void *cls,
+ sqlite3_stmt *result,
int row,
- const char *fname,
size_t *dst_size,
void *dst);
/**
* Function called to clean up memory allocated
- * by a #GNUNET_PQ_ResultConverter.
+ * by a #GNUNET_SQ_ResultConverter.
*
* @param cls closure
* @param rd result data to clean up
*/
typedef void
-(*GNUNET_PQ_ResultCleanup)(void *cls,
+(*GNUNET_SQ_ResultCleanup)(void *cls,
void *rd);
/**
* @brief Description of a DB result cell.
*/
-struct GNUNET_PQ_ResultSpec
+struct GNUNET_SQ_ResultSpec
{
/**
* What is the format of the result?
*/
- GNUNET_PQ_ResultConverter conv;
+ GNUNET_SQ_ResultConverter conv;
/**
* Function to clean up result data, NULL if cleanup is
* not necessary.
*/
- GNUNET_PQ_ResultCleanup cleaner;
+ GNUNET_SQ_ResultCleanup cleaner;
/**
* Closure for @e conv and @e cleaner.
@@ -257,11 +248,6 @@ struct GNUNET_PQ_ResultSpec
size_t dst_size;
/**
- * Field name of the desired result.
- */
- const char *fname;
-
- /**
* Where to store actual size of the result.
*/
size_t *result_size;
@@ -274,170 +260,144 @@ struct GNUNET_PQ_ResultSpec
*
* @return array last entry for the result specification to use
*/
-#define GNUNET_PQ_result_spec_end { NULL, NULL, NULL, NULL, 0, NULL, NULL }
+#define GNUNET_SQ_result_spec_end { NULL, NULL, NULL, NULL, 0, NULL }
/**
* Variable-size result expected.
*
- * @param name name of the field in the table
* @param[out] dst where to store the result, allocated
* @param[out] sptr where to store the size of @a dst
* @return array entry for the result specification to use
*/
-struct GNUNET_PQ_ResultSpec
-GNUNET_PQ_result_spec_variable_size (const char *name,
- void **dst,
+struct GNUNET_SQ_ResultSpec
+GNUNET_SQ_result_spec_variable_size (void **dst,
size_t *sptr);
/**
* Fixed-size result expected.
*
- * @param name name of the field in the table
* @param[out] dst where to store the result
* @param dst_size number of bytes in @a dst
* @return array entry for the result specification to use
*/
-struct GNUNET_PQ_ResultSpec
-GNUNET_PQ_result_spec_fixed_size (const char *name,
- void *dst,
+struct GNUNET_SQ_ResultSpec
+GNUNET_SQ_result_spec_fixed_size (void *dst,
size_t dst_size);
-
/**
* We expect a fixed-size result, with size determined by the type of `* dst`
*
- * @param name name of the field in the table
* @param dst point to where to store the result, type fits expected result
size
* @return array entry for the result specification to use
*/
-#define GNUNET_PQ_result_spec_auto_from_type(name, dst)
GNUNET_PQ_result_spec_fixed_size (name, (dst), sizeof (*(dst)))
+#define GNUNET_SQ_result_spec_auto_from_type(dst)
GNUNET_SQ_result_spec_fixed_size (name, (dst), sizeof (*(dst)))
/**
* Variable-size result expected.
*
- * @param name name of the field in the table
* @param[out] dst where to store the result, allocated
* @param[out] sptr where to store the size of @a dst
* @return array entry for the result specification to use
*/
-struct GNUNET_PQ_ResultSpec
-GNUNET_PQ_result_spec_variable_size (const char *name,
- void **dst,
+struct GNUNET_SQ_ResultSpec
+GNUNET_SQ_result_spec_variable_size (void **dst,
size_t *sptr);
/**
* 0-terminated string expected.
*
- * @param name name of the field in the table
* @param[out] dst where to store the result, allocated
* @return array entry for the result specification to use
*/
-struct GNUNET_PQ_ResultSpec
-GNUNET_PQ_result_spec_string (const char *name,
- char **dst);
+struct GNUNET_SQ_ResultSpec
+GNUNET_SQ_result_spec_string (char **dst);
/**
* RSA public key expected.
*
- * @param name name of the field in the table
* @param[out] rsa where to store the result
* @return array entry for the result specification to use
*/
-struct GNUNET_PQ_ResultSpec
-GNUNET_PQ_result_spec_rsa_public_key (const char *name,
- struct GNUNET_CRYPTO_RsaPublicKey **rsa);
+struct GNUNET_SQ_ResultSpec
+GNUNET_SQ_result_spec_rsa_public_key (struct GNUNET_CRYPTO_RsaPublicKey **rsa);
/**
* RSA signature expected.
*
- * @param name name of the field in the table
* @param[out] sig where to store the result;
* @return array entry for the result specification to use
*/
-struct GNUNET_PQ_ResultSpec
-GNUNET_PQ_result_spec_rsa_signature (const char *name,
- struct GNUNET_CRYPTO_RsaSignature **sig);
+struct GNUNET_SQ_ResultSpec
+GNUNET_SQ_result_spec_rsa_signature (struct GNUNET_CRYPTO_RsaSignature **sig);
/**
* Absolute time expected.
*
- * @param name name of the field in the table
* @param[out] at where to store the result
* @return array entry for the result specification to use
*/
-struct GNUNET_PQ_ResultSpec
-GNUNET_PQ_result_spec_absolute_time (const char *name,
- struct GNUNET_TIME_Absolute *at);
+struct GNUNET_SQ_ResultSpec
+GNUNET_SQ_result_spec_absolute_time (struct GNUNET_TIME_Absolute *at);
/**
* Absolute time expected.
*
- * @param name name of the field in the table
* @param[out] at where to store the result
* @return array entry for the result specification to use
*/
-struct GNUNET_PQ_ResultSpec
-GNUNET_PQ_result_spec_absolute_time_nbo (const char *name,
- struct GNUNET_TIME_AbsoluteNBO *at);
+struct GNUNET_SQ_ResultSpec
+GNUNET_SQ_result_spec_absolute_time_nbo (struct GNUNET_TIME_AbsoluteNBO *at);
/**
* uint16_t expected.
*
- * @param name name of the field in the table
* @param[out] u16 where to store the result
* @return array entry for the result specification to use
*/
-struct GNUNET_PQ_ResultSpec
-GNUNET_PQ_result_spec_uint16 (const char *name,
- uint16_t *u16);
+struct GNUNET_SQ_ResultSpec
+GNUNET_SQ_result_spec_uint16 (uint16_t *u16);
/**
* uint32_t expected.
*
- * @param name name of the field in the table
* @param[out] u32 where to store the result
* @return array entry for the result specification to use
*/
-struct GNUNET_PQ_ResultSpec
-GNUNET_PQ_result_spec_uint32 (const char *name,
- uint32_t *u32);
+struct GNUNET_SQ_ResultSpec
+GNUNET_SQ_result_spec_uint32 (uint32_t *u32);
/**
* uint64_t expected.
*
- * @param name name of the field in the table
* @param[out] u64 where to store the result
* @return array entry for the result specification to use
*/
-struct GNUNET_PQ_ResultSpec
-GNUNET_PQ_result_spec_uint64 (const char *name,
- uint64_t *u64);
+struct GNUNET_SQ_ResultSpec
+GNUNET_SQ_result_spec_uint64 (uint64_t *u64);
/**
* Execute a prepared statement.
*
* @param db_conn database connection
- * @param name name of the prepared statement
* @param params parameters to the statement
- * @return postgres result
+ * @return #GNUNET_OK on success, #GNUNET_SYSERR on error
*/
-PGresult *
-GNUNET_PQ_exec_prepared (PGconn *db_conn,
- const char *name,
- const struct GNUNET_PQ_QueryParam *params);
+int
+GNUNET_SQ_bind (sqlite3_stmt *stmt,
+ const struct GNUNET_SQ_QueryParam *params);
/**
@@ -451,21 +411,21 @@ GNUNET_PQ_exec_prepared (PGconn *db_conn,
* #GNUNET_SYSERR if a result was invalid (non-existing field)
*/
int
-GNUNET_PQ_extract_result (PGresult *result,
- struct GNUNET_PQ_ResultSpec *rs,
+GNUNET_SQ_extract_result (sqlite3_stmt *result,
+ struct GNUNET_SQ_ResultSpec *rs,
int row);
/**
* Free all memory that was allocated in @a rs during
- * #GNUNET_PQ_extract_result().
+ * #GNUNET_SQ_extract_result().
*
* @param rs reult specification to clean up
*/
void
-GNUNET_PQ_cleanup_result (struct GNUNET_PQ_ResultSpec *rs);
+GNUNET_SQ_cleanup_result (struct GNUNET_SQ_ResultSpec *rs);
-#endif /* GNUNET_PQ_LIB_H_ */
+#endif /* GNUNET_SQ_LIB_H_ */
-/* end of include/gnunet_pq_lib.h */
+/* end of include/gnunet_sq_lib.h */
--
To stop receiving notification emails like this one, please contact
address@hidden
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] [gnunet] branch master updated: designing SQ-lib API,
gnunet <=