[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r24908 - gnunet/src/datacache
From: |
gnunet |
Subject: |
[GNUnet-SVN] r24908 - gnunet/src/datacache |
Date: |
Mon, 12 Nov 2012 12:00:20 +0100 |
Author: grothoff
Date: 2012-11-12 12:00:20 +0100 (Mon, 12 Nov 2012)
New Revision: 24908
Modified:
gnunet/src/datacache/datacache.c
gnunet/src/datacache/plugin_datacache_sqlite.c
Log:
support running purely in-memory
Modified: gnunet/src/datacache/datacache.c
===================================================================
--- gnunet/src/datacache/datacache.c 2012-11-12 11:00:10 UTC (rev 24907)
+++ gnunet/src/datacache/datacache.c 2012-11-12 11:00:20 UTC (rev 24908)
@@ -154,12 +154,19 @@
bf_size = quota / 32; /* 8 bit per entry, 1 bit per 32 kb in DB */
ret = GNUNET_malloc (sizeof (struct GNUNET_DATACACHE_Handle));
- ret->bloom_name = GNUNET_DISK_mktemp ("gnunet-datacachebloom");
+
+ if (GNUNET_YES !=
+ GNUNET_CONFIGURATION_get_value_yesno (cfg, section, "DISABLE_BF_RC"))
+ {
+ fprintf (stderr, "Using RC!\n");
+ ret->bloom_name = GNUNET_DISK_mktemp ("gnunet-datacachebloom");
+ }
if (NULL != ret->bloom_name)
{
ret->filter = GNUNET_CONTAINER_bloomfilter_load (ret->bloom_name, quota /
1024, /* 8 bit per entry in DB, expect 1k entries */
- 5);
+ 5);
}
+
if (NULL == ret->filter)
{
ret->filter = GNUNET_CONTAINER_bloomfilter_init (NULL, bf_size, 5); /*
approx. 3% false positives at max use */
Modified: gnunet/src/datacache/plugin_datacache_sqlite.c
===================================================================
--- gnunet/src/datacache/plugin_datacache_sqlite.c 2012-11-12 11:00:10 UTC
(rev 24907)
+++ gnunet/src/datacache/plugin_datacache_sqlite.c 2012-11-12 11:00:20 UTC
(rev 24908)
@@ -364,21 +364,33 @@
sqlite3 *dbh;
char *emsg;
- fn = GNUNET_DISK_mktemp ("gnunet-datacache");
- if (fn == NULL)
+ if (GNUNET_YES ==
+ GNUNET_CONFIGURATION_get_value_yesno (env->cfg,
+ "datacache-sqlite",
+ "IN_MEMORY"))
{
- GNUNET_break (0);
- return NULL;
+ if (SQLITE_OK != sqlite3_open (":memory:", &dbh))
+ return NULL;
+ fn_utf8 = NULL;
}
- /* fn should be UTF-8-encoded. If it isn't, it's a bug. */
- fn_utf8 = GNUNET_strdup (fn);
- if (SQLITE_OK != sqlite3_open (fn_utf8, &dbh))
+ else
{
+ fn = GNUNET_DISK_mktemp ("gnunet-datacache");
+ if (fn == NULL)
+ {
+ GNUNET_break (0);
+ return NULL;
+ }
+ /* fn should be UTF-8-encoded. If it isn't, it's a bug. */
+ fn_utf8 = GNUNET_strdup (fn);
+ if (SQLITE_OK != sqlite3_open (fn_utf8, &dbh))
+ {
+ GNUNET_free (fn);
+ GNUNET_free (fn_utf8);
+ return NULL;
+ }
GNUNET_free (fn);
- GNUNET_free (fn_utf8);
- return NULL;
}
- GNUNET_free (fn);
SQLITE3_EXEC (dbh, "PRAGMA temp_store=MEMORY");
SQLITE3_EXEC (dbh, "PRAGMA locking_mode=EXCLUSIVE");
@@ -386,6 +398,12 @@
SQLITE3_EXEC (dbh, "PRAGMA synchronous=OFF");
SQLITE3_EXEC (dbh, "PRAGMA count_changes=OFF");
SQLITE3_EXEC (dbh, "PRAGMA page_size=4092");
+ if (GNUNET_YES ==
+ GNUNET_CONFIGURATION_get_value_yesno (env->cfg,
+ "datacache-sqlite",
+ "IN_MEMORY"))
+ SQLITE3_EXEC (dbh, "PRAGMA sqlite_temp_store=3");
+
SQLITE3_EXEC (dbh,
"CREATE TABLE ds090 (" " type INTEGER NOT NULL DEFAULT 0,"
" expire INTEGER NOT NULL DEFAULT 0,"
@@ -425,9 +443,10 @@
#endif
#if !WINDOWS || defined(__CYGWIN__)
- if (0 != UNLINK (plugin->fn))
+ if ( (NULL != plugin->fn) &&
+ (0 != UNLINK (plugin->fn)) )
LOG_STRERROR_FILE (GNUNET_ERROR_TYPE_WARNING, "unlink", plugin->fn);
- GNUNET_free (plugin->fn);
+ GNUNET_free_non_null (plugin->fn);
#endif
result = sqlite3_close (plugin->dbh);
#if SQLITE_VERSION_NUMBER >= 3007000
@@ -453,9 +472,10 @@
LOG_SQLITE (plugin->dbh, GNUNET_ERROR_TYPE_ERROR, "sqlite3_close");
#if WINDOWS && !defined(__CYGWIN__)
- if (0 != UNLINK (plugin->fn))
+ if ( (NULL != plugin->fn) &&
+ (0 != UNLINK (plugin->fn)) )
LOG_STRERROR_FILE (GNUNET_ERROR_TYPE_WARNING, "unlink", plugin->fn);
- GNUNET_free (plugin->fn);
+ GNUNET_free_non_null (plugin->fn);
#endif
GNUNET_free (plugin);
GNUNET_free (api);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r24908 - gnunet/src/datacache,
gnunet <=