aboutsummaryrefslogtreecommitdiff
path: root/src/peerstore/gnunet-service-peerstore.c
diff options
context:
space:
mode:
authorOmar Tarabai <tarabai@devegypt.com>2014-05-19 12:07:15 +0000
committerOmar Tarabai <tarabai@devegypt.com>2014-05-19 12:07:15 +0000
commitaa0f830c863cb8ddb4187f49134d9fbe2de70045 (patch)
tree569209cd96e18b7c508afea1c1f2f3fa9aa579eb /src/peerstore/gnunet-service-peerstore.c
parent7528bcf5a5af0d90c06aeab964e5c6471900ae06 (diff)
downloadgnunet-aa0f830c863cb8ddb4187f49134d9fbe2de70045.tar.gz
gnunet-aa0f830c863cb8ddb4187f49134d9fbe2de70045.zip
peerstore: record expiry
Diffstat (limited to 'src/peerstore/gnunet-service-peerstore.c')
-rw-r--r--src/peerstore/gnunet-service-peerstore.c24
1 files changed, 23 insertions, 1 deletions
diff --git a/src/peerstore/gnunet-service-peerstore.c b/src/peerstore/gnunet-service-peerstore.c
index ea6268bf1..b78276922 100644
--- a/src/peerstore/gnunet-service-peerstore.c
+++ b/src/peerstore/gnunet-service-peerstore.c
@@ -30,7 +30,11 @@
30#include "peerstore_common.h" 30#include "peerstore_common.h"
31 31
32//TODO: GNUNET_SERVER_receive_done() ? 32//TODO: GNUNET_SERVER_receive_done() ?
33//TODO: implement value lifetime 33
34/**
35 * Interval for expired records cleanup (in seconds)
36 */
37#define CLEANUP_INTERVAL 300 /* 5mins */
34 38
35/** 39/**
36 * Our configuration. 40 * Our configuration.
@@ -65,6 +69,23 @@ shutdown_task (void *cls,
65 } 69 }
66} 70}
67 71
72/**
73 * Deletes any expired records from storage
74 */
75static void
76cleanup_expired_records(void *cls,
77 const struct GNUNET_SCHEDULER_TaskContext *tc)
78{
79 int deleted;
80
81 GNUNET_assert(NULL != db);
82 deleted = db->expire_records(db->cls, GNUNET_TIME_absolute_get());
83 GNUNET_log(GNUNET_ERROR_TYPE_INFO, "%d records expired.\n", deleted);
84 GNUNET_SCHEDULER_add_delayed(
85 GNUNET_TIME_relative_multiply(GNUNET_TIME_UNIT_SECONDS, CLEANUP_INTERVAL),
86 &cleanup_expired_records, NULL);
87}
88
68 89
69/** 90/**
70 * A client disconnected. Remove all of its data structure entries. 91 * A client disconnected. Remove all of its data structure entries.
@@ -245,6 +266,7 @@ run (void *cls,
245 GNUNET_log(GNUNET_ERROR_TYPE_ERROR, "Could not load database backend `%s'\n", db_lib_name); 266 GNUNET_log(GNUNET_ERROR_TYPE_ERROR, "Could not load database backend `%s'\n", db_lib_name);
246 else 267 else
247 { 268 {
269 cleanup_expired_records(NULL, NULL);
248 GNUNET_SERVER_add_handlers (server, handlers); 270 GNUNET_SERVER_add_handlers (server, handlers);
249 GNUNET_SERVER_disconnect_notify (server, 271 GNUNET_SERVER_disconnect_notify (server,
250 &handle_client_disconnect, 272 &handle_client_disconnect,