[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r31902 - gnunet/src/testbed
From: |
gnunet |
Subject: |
[GNUnet-SVN] r31902 - gnunet/src/testbed |
Date: |
Tue, 14 Jan 2014 14:32:22 +0100 |
Author: harsha
Date: 2014-01-14 14:32:21 +0100 (Tue, 14 Jan 2014)
New Revision: 31902
Modified:
gnunet/src/testbed/gnunet-daemon-latency-logger.c
Log:
- only log changed values
Modified: gnunet/src/testbed/gnunet-daemon-latency-logger.c
===================================================================
--- gnunet/src/testbed/gnunet-daemon-latency-logger.c 2014-01-14 13:31:06 UTC
(rev 31901)
+++ gnunet/src/testbed/gnunet-daemon-latency-logger.c 2014-01-14 13:32:21 UTC
(rev 31902)
@@ -58,6 +58,29 @@
/**
+ * Entry type to be used in the map to store old latency values
+ */
+struct Entry
+{
+ /**
+ * The peer's identity
+ */
+ struct GNUNET_PeerIdentity id;
+
+ /**
+ * The last known value for latency
+ */
+ unsigned int latency;
+
+};
+
+
+/**
+ * Handle to the map used to store old latency values for peers
+ */
+static struct GNUNET_CONTAINER_MultiPeerMap *map;
+
+/**
* The SQLite database handle
*/
static struct sqlite3 *db;
@@ -79,6 +102,31 @@
/**
+ * @ingroup hashmap
+ * Iterator over hash map entries.
+ *
+ * @param cls closure
+ * @param key current public key
+ * @param value value in the hash map
+ * @return #GNUNET_YES if we should continue to
+ * iterate,
+ * #GNUNET_NO if not.
+ */
+static int
+free_iterator (void *cls,
+ const struct GNUNET_PeerIdentity *key,
+ void *value)
+{
+ struct Entry *e = cls;
+
+ GNUNET_assert (GNUNET_YES ==
+ GNUNET_CONTAINER_multipeermap_remove (map, key, e));
+ GNUNET_free (e);
+ return GNUNET_YES;
+}
+
+
+/**
* Shutdown
*
* @param cls NULL
@@ -98,6 +146,13 @@
}
GNUNET_break (SQLITE_OK == sqlite3_close (db));
db = NULL;
+ if (NULL != map)
+ {
+ GNUNET_assert (GNUNET_SYSERR !=
+ GNUNET_CONTAINER_multipeermap_iterate (map, free_iterator,
NULL));
+ GNUNET_CONTAINER_multipeermap_destroy (map);
+ map = NULL;
+ }
}
/**
@@ -131,6 +186,7 @@
" ?2,"
" datetime('now')"
");";
+ struct Entry *entry;
int latency;
unsigned int cnt;
@@ -146,6 +202,15 @@
insert:
latency = (int) ntohl (ats[cnt].value);
+ entry = NULL;
+ if (GNUNET_YES == GNUNET_CONTAINER_multipeermap_contains (map,
+ &address->peer))
+ {
+ entry = GNUNET_CONTAINER_multipeermap_get (map, &address->peer);
+ GNUNET_assert (NULL != entry);
+ if (latency == entry->latency)
+ return;
+ }
if (NULL == stmt_insert)
{
if (SQLITE_OK != sqlite3_prepare_v2 (db, query_insert, -1, &stmt_insert,
@@ -173,6 +238,15 @@
LOG_SQLITE (db, NULL, GNUNET_ERROR_TYPE_ERROR, "sqlite3_insert");
goto err_shutdown;
}
+ if (NULL == entry)
+ {
+ entry = GNUNET_new (struct Entry);
+ entry->id = address->peer;
+ GNUNET_CONTAINER_multipeermap_put (map,
+ &entry->id, entry,
+
GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_FAST);
+ }
+ entry->latency = latency;
return;
err_shutdown:
@@ -226,6 +300,7 @@
GNUNET_free (dbfile);
dbfile = NULL;
ats = GNUNET_ATS_performance_init (c, addr_info_cb, NULL);
+ map = GNUNET_CONTAINER_multipeermap_create (30, GNUNET_YES);
shutdown_task = GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_FOREVER_REL,
&do_shutdown, NULL);
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r31902 - gnunet/src/testbed,
gnunet <=