gnunet-svn
[Top][All Lists]
Advanced

[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);




reply via email to

[Prev in Thread] Current Thread [Next in Thread]