[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] [gnunet] branch master updated: migrating namecache to use
From: |
gnunet |
Subject: |
[GNUnet-SVN] [gnunet] branch master updated: migrating namecache to use SQ lib |
Date: |
Sun, 12 Mar 2017 17:11:07 +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 2d72c24ec migrating namecache to use SQ lib
2d72c24ec is described below
commit 2d72c24ec455b75728d2dcc4b4e7c6f3ab59d7fc
Author: Christian Grothoff <address@hidden>
AuthorDate: Sun Mar 12 17:11:04 2017 +0100
migrating namecache to use SQ lib
---
src/namecache/Makefile.am | 2 +-
src/namecache/plugin_namecache_sqlite.c | 213 ++++++++++++++++++--------------
src/namestore/Makefile.am | 1 +
3 files changed, 119 insertions(+), 97 deletions(-)
diff --git a/src/namecache/Makefile.am b/src/namecache/Makefile.am
index 89d7bffee..d379b2602 100644
--- a/src/namecache/Makefile.am
+++ b/src/namecache/Makefile.am
@@ -121,6 +121,7 @@ libgnunet_plugin_namecache_sqlite_la_SOURCES = \
plugin_namecache_sqlite.c
libgnunet_plugin_namecache_sqlite_la_LIBADD = \
libgnunetnamecache.la \
+ $(top_builddir)/src/sq/libgnunetsq.la \
$(top_builddir)/src/statistics/libgnunetstatistics.la \
$(top_builddir)/src/util/libgnunetutil.la $(XLIBS) -lsqlite3 \
$(LTLIBINTL)
@@ -172,4 +173,3 @@ EXTRA_DIST = \
test_plugin_namecache_sqlite.conf \
test_plugin_namecache_postgres.conf \
test_plugin_namecache_flat.conf
-
diff --git a/src/namecache/plugin_namecache_sqlite.c
b/src/namecache/plugin_namecache_sqlite.c
index fdce899fa..17f671fe5 100644
--- a/src/namecache/plugin_namecache_sqlite.c
+++ b/src/namecache/plugin_namecache_sqlite.c
@@ -25,6 +25,7 @@
*/
#include "platform.h"
+#include "gnunet_sq_lib.h"
#include "gnunet_namecache_plugin.h"
#include "gnunet_namecache_service.h"
#include "gnunet_gnsrecord_lib.h"
@@ -241,25 +242,28 @@ database_setup (struct Plugin *plugin)
sqlite3_finalize (stmt);
create_indices (plugin->dbh);
- if ((sq_prepare
- (plugin->dbh,
- "INSERT INTO ns096blocks (query,block,expiration_time) VALUES (?, ?,
?)",
- &plugin->cache_block) != SQLITE_OK) ||
- (sq_prepare
- (plugin->dbh,
- "DELETE FROM ns096blocks WHERE expiration_time<?",
- &plugin->expire_blocks) != SQLITE_OK) ||
- (sq_prepare
- (plugin->dbh,
- "DELETE FROM ns096blocks WHERE query=? AND expiration_time<=?",
- &plugin->delete_block) != SQLITE_OK) ||
- (sq_prepare
- (plugin->dbh,
- "SELECT block FROM ns096blocks WHERE query=? ORDER BY expiration_time
DESC LIMIT 1",
- &plugin->lookup_block) != SQLITE_OK)
+ if ( (SQLITE_OK !=
+ sq_prepare (plugin->dbh,
+ "INSERT INTO ns096blocks (query,block,expiration_time)
VALUES (?, ?, ?)",
+ &plugin->cache_block)) ||
+ (SQLITE_OK !=
+ sq_prepare (plugin->dbh,
+ "DELETE FROM ns096blocks WHERE expiration_time<?",
+ &plugin->expire_blocks)) ||
+ (SQLITE_OK !=
+ sq_prepare (plugin->dbh,
+ "DELETE FROM ns096blocks WHERE query=? AND
expiration_time<=?",
+ &plugin->delete_block)) ||
+ (SQLITE_OK !=
+ sq_prepare (plugin->dbh,
+ "SELECT block FROM ns096blocks WHERE query=? "
+ "ORDER BY expiration_time DESC LIMIT 1",
+ &plugin->lookup_block) )
)
{
- LOG_SQLITE (plugin,GNUNET_ERROR_TYPE_ERROR, "precompiling");
+ LOG_SQLITE (plugin,
+ GNUNET_ERROR_TYPE_ERROR,
+ "precompiling");
return GNUNET_SYSERR;
}
return GNUNET_OK;
@@ -319,35 +323,41 @@ static void
namecache_sqlite_expire_blocks (struct Plugin *plugin)
{
struct GNUNET_TIME_Absolute now;
+ struct GNUNET_SQ_QueryParam params[] = {
+ GNUNET_SQ_query_param_absolute_time (&now),
+ GNUNET_SQ_query_param_end
+ };
int n;
now = GNUNET_TIME_absolute_get ();
- if (SQLITE_OK != sqlite3_bind_int64 (plugin->expire_blocks,
- 1, now.abs_value_us))
+ if (GNUNET_OK !=
+ GNUNET_SQ_bind (plugin->expire_blocks,
+ params))
{
LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
"sqlite3_bind_XXXX");
- if (SQLITE_OK != sqlite3_reset (plugin->expire_blocks))
- LOG_SQLITE (plugin,
- GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
- "sqlite3_reset");
+ GNUNET_SQ_reset (plugin->dbh,
+ plugin->expire_blocks);
return;
}
n = sqlite3_step (plugin->expire_blocks);
- if (SQLITE_OK != sqlite3_reset (plugin->expire_blocks))
- LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
- "sqlite3_reset");
+ GNUNET_SQ_reset (plugin->dbh,
+ plugin->expire_blocks);
switch (n)
{
case SQLITE_DONE:
- GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, "sqlite", "Records expired\n");
+ GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG,
+ "sqlite",
+ "Records expired\n");
return;
case SQLITE_BUSY:
- LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_WARNING | GNUNET_ERROR_TYPE_BULK,
+ LOG_SQLITE (plugin,
+ GNUNET_ERROR_TYPE_WARNING | GNUNET_ERROR_TYPE_BULK,
"sqlite3_step");
return;
default:
- LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
+ LOG_SQLITE (plugin,
+ GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
"sqlite3_step");
return;
}
@@ -368,8 +378,21 @@ namecache_sqlite_cache_block (void *cls,
struct Plugin *plugin = cls;
struct GNUNET_HashCode query;
struct GNUNET_TIME_Absolute expiration;
- int64_t dval;
- size_t block_size;
+ size_t block_size = ntohl (block->purpose.size) +
+ sizeof (struct GNUNET_CRYPTO_EcdsaPublicKey) +
+ sizeof (struct GNUNET_CRYPTO_EcdsaSignature);
+ struct GNUNET_SQ_QueryParam del_params[] = {
+ GNUNET_SQ_query_param_auto_from_type (&query),
+ GNUNET_SQ_query_param_absolute_time (&expiration),
+ GNUNET_SQ_query_param_end
+ };
+ struct GNUNET_SQ_QueryParam ins_params[] = {
+ GNUNET_SQ_query_param_auto_from_type (&query),
+ GNUNET_SQ_query_param_fixed_size (block,
+ block_size),
+ GNUNET_SQ_query_param_absolute_time (&expiration),
+ GNUNET_SQ_query_param_end
+ };
int n;
namecache_sqlite_expire_blocks (plugin);
@@ -377,12 +400,6 @@ namecache_sqlite_cache_block (void *cls,
sizeof (struct GNUNET_CRYPTO_EcdsaPublicKey),
&query);
expiration = GNUNET_TIME_absolute_ntoh (block->expiration_time);
- dval = (int64_t) expiration.abs_value_us;
- if (dval < 0)
- dval = INT64_MAX;
- block_size = ntohl (block->purpose.size) +
- sizeof (struct GNUNET_CRYPTO_EcdsaPublicKey) +
- sizeof (struct GNUNET_CRYPTO_EcdsaSignature);
if (block_size > 64 * 65536)
{
GNUNET_break (0);
@@ -390,61 +407,48 @@ namecache_sqlite_cache_block (void *cls,
}
/* delete old version of the block */
- if ( (SQLITE_OK !=
- sqlite3_bind_blob (plugin->delete_block, 1,
- &query, sizeof (struct GNUNET_HashCode),
- SQLITE_STATIC)) ||
- (SQLITE_OK !=
- sqlite3_bind_int64 (plugin->delete_block,
- 2, dval)) )
+ if (GNUNET_OK !=
+ GNUNET_SQ_bind (plugin->delete_block,
+ del_params))
{
LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
"sqlite3_bind_XXXX");
- if (SQLITE_OK != sqlite3_reset (plugin->delete_block))
- LOG_SQLITE (plugin,
- GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
- "sqlite3_reset");
+ GNUNET_SQ_reset (plugin->dbh,
+ plugin->delete_block);
return GNUNET_SYSERR;
}
n = sqlite3_step (plugin->delete_block);
switch (n)
{
case SQLITE_DONE:
- GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, "sqlite", "Old block deleted\n");
+ GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG,
+ "sqlite",
+ "Old block deleted\n");
break;
case SQLITE_BUSY:
- LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_WARNING | GNUNET_ERROR_TYPE_BULK,
+ LOG_SQLITE (plugin,
+ GNUNET_ERROR_TYPE_WARNING | GNUNET_ERROR_TYPE_BULK,
"sqlite3_step");
break;
default:
- LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
+ LOG_SQLITE (plugin,
+ GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
"sqlite3_step");
break;
}
- if (SQLITE_OK != sqlite3_reset (plugin->delete_block))
- LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
- "sqlite3_reset");
+ GNUNET_SQ_reset (plugin->dbh,
+ plugin->delete_block);
/* insert new version of the block */
- if ((SQLITE_OK !=
- sqlite3_bind_blob (plugin->cache_block, 1,
- &query, sizeof (struct GNUNET_HashCode),
- SQLITE_STATIC)) ||
- (SQLITE_OK !=
- sqlite3_bind_blob (plugin->cache_block, 2,
- block, block_size,
- SQLITE_STATIC)) ||
- (SQLITE_OK !=
- sqlite3_bind_int64 (plugin->cache_block, 3,
- dval)))
+ if (GNUNET_OK !=
+ GNUNET_SQ_bind (plugin->cache_block,
+ ins_params))
{
LOG_SQLITE (plugin,
GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
"sqlite3_bind_XXXX");
- if (SQLITE_OK != sqlite3_reset (plugin->cache_block))
- LOG_SQLITE (plugin,
- GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
- "sqlite3_reset");
+ GNUNET_SQ_reset (plugin->dbh,
+ plugin->cache_block);
return GNUNET_SYSERR;
}
@@ -452,9 +456,8 @@ namecache_sqlite_cache_block (void *cls,
"Caching block under derived key `%s'\n",
GNUNET_h2s_full (&query));
n = sqlite3_step (plugin->cache_block);
- if (SQLITE_OK != sqlite3_reset (plugin->cache_block))
- LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
- "sqlite3_reset");
+ GNUNET_SQ_reset (plugin->dbh,
+ plugin->cache_block);
switch (n)
{
case SQLITE_DONE:
@@ -462,11 +465,13 @@ namecache_sqlite_cache_block (void *cls,
"Record stored\n");
return GNUNET_OK;
case SQLITE_BUSY:
- LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_WARNING | GNUNET_ERROR_TYPE_BULK,
+ LOG_SQLITE (plugin,
+ GNUNET_ERROR_TYPE_WARNING | GNUNET_ERROR_TYPE_BULK,
"sqlite3_step");
return GNUNET_NO;
default:
- LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
+ LOG_SQLITE (plugin,
+ GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
"sqlite3_step");
return GNUNET_SYSERR;
}
@@ -486,35 +491,50 @@ namecache_sqlite_cache_block (void *cls,
static int
namecache_sqlite_lookup_block (void *cls,
const struct GNUNET_HashCode *query,
- GNUNET_NAMECACHE_BlockCallback iter, void
*iter_cls)
+ GNUNET_NAMECACHE_BlockCallback iter,
+ void *iter_cls)
{
struct Plugin *plugin = cls;
int ret;
int sret;
size_t block_size;
const struct GNUNET_GNSRECORD_Block *block;
+ struct GNUNET_SQ_QueryParam params[] = {
+ GNUNET_SQ_query_param_auto_from_type (query),
+ GNUNET_SQ_query_param_end
+ };
+ struct GNUNET_SQ_ResultSpec rs[] = {
+ GNUNET_SQ_result_spec_variable_size ((void **) &block,
+ &block_size),
+ GNUNET_SQ_result_spec_end
+ };
- if (SQLITE_OK != sqlite3_bind_blob (plugin->lookup_block, 1,
- query, sizeof (struct GNUNET_HashCode),
- SQLITE_STATIC))
+ if (GNUNET_OK !=
+ GNUNET_SQ_bind (plugin->lookup_block,
+ params))
{
- LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
+ LOG_SQLITE (plugin,
+ GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
"sqlite3_bind_XXXX");
- if (SQLITE_OK != sqlite3_reset (plugin->lookup_block))
- LOG_SQLITE (plugin,
- GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
- "sqlite3_reset");
+ GNUNET_SQ_reset (plugin->dbh,
+ plugin->lookup_block);
return GNUNET_SYSERR;
}
ret = GNUNET_NO;
- if (SQLITE_ROW == (sret = sqlite3_step (plugin->lookup_block)))
+ if (SQLITE_ROW ==
+ (sret = sqlite3_step (plugin->lookup_block)))
{
- block = sqlite3_column_blob (plugin->lookup_block, 0);
- block_size = sqlite3_column_bytes (plugin->lookup_block, 0);
- if ( (block_size < sizeof (struct GNUNET_GNSRECORD_Block)) ||
- (ntohl (block->purpose.size) +
- sizeof (struct GNUNET_CRYPTO_EcdsaPublicKey) +
- sizeof (struct GNUNET_CRYPTO_EcdsaSignature) != block_size) )
+ if (GNUNET_OK !=
+ GNUNET_SQ_extract_result (plugin->lookup_block,
+ rs))
+ {
+ GNUNET_break (0);
+ ret = GNUNET_SYSERR;
+ }
+ else if ( (block_size < sizeof (struct GNUNET_GNSRECORD_Block)) ||
+ (ntohl (block->purpose.size) +
+ sizeof (struct GNUNET_CRYPTO_EcdsaPublicKey) +
+ sizeof (struct GNUNET_CRYPTO_EcdsaSignature) != block_size) )
{
GNUNET_break (0);
ret = GNUNET_SYSERR;
@@ -524,7 +544,8 @@ namecache_sqlite_lookup_block (void *cls,
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
"Found block under derived key `%s'\n",
GNUNET_h2s_full (query));
- iter (iter_cls, block);
+ iter (iter_cls,
+ block);
ret = GNUNET_YES;
}
}
@@ -532,7 +553,9 @@ namecache_sqlite_lookup_block (void *cls,
{
if (SQLITE_DONE != sret)
{
- LOG_SQLITE (plugin, GNUNET_ERROR_TYPE_ERROR, "sqlite_step");
+ LOG_SQLITE (plugin,
+ GNUNET_ERROR_TYPE_ERROR,
+ "sqlite_step");
ret = GNUNET_SYSERR;
}
else
@@ -542,10 +565,8 @@ namecache_sqlite_lookup_block (void *cls,
GNUNET_h2s_full (query));
}
}
- if (SQLITE_OK != sqlite3_reset (plugin->lookup_block))
- LOG_SQLITE (plugin,
- GNUNET_ERROR_TYPE_ERROR | GNUNET_ERROR_TYPE_BULK,
- "sqlite3_reset");
+ GNUNET_SQ_reset (plugin->dbh,
+ plugin->lookup_block);
return ret;
}
diff --git a/src/namestore/Makefile.am b/src/namestore/Makefile.am
index e9b0f179a..de46e9c89 100644
--- a/src/namestore/Makefile.am
+++ b/src/namestore/Makefile.am
@@ -189,6 +189,7 @@ libgnunet_plugin_namestore_sqlite_la_SOURCES = \
plugin_namestore_sqlite.c
libgnunet_plugin_namestore_sqlite_la_LIBADD = \
$(top_builddir)/src/gnsrecord/libgnunetgnsrecord.la \
+ $(top_builddir)/src/sq/libgnunetsq.la \
$(top_builddir)/src/statistics/libgnunetstatistics.la \
$(top_builddir)/src/util/libgnunetutil.la $(XLIBS) -lsqlite3 \
$(LTLIBINTL)
--
To stop receiving notification emails like this one, please contact
address@hidden
- [GNUnet-SVN] [gnunet] branch master updated: migrating namecache to use SQ lib,
gnunet <=