diff options
author | Omar Tarabai <tarabai@devegypt.com> | 2014-05-19 12:07:15 +0000 |
---|---|---|
committer | Omar Tarabai <tarabai@devegypt.com> | 2014-05-19 12:07:15 +0000 |
commit | aa0f830c863cb8ddb4187f49134d9fbe2de70045 (patch) | |
tree | 569209cd96e18b7c508afea1c1f2f3fa9aa579eb /src/peerstore/gnunet-service-peerstore.c | |
parent | 7528bcf5a5af0d90c06aeab964e5c6471900ae06 (diff) | |
download | gnunet-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.c | 24 |
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 | */ | ||
75 | static void | ||
76 | cleanup_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, |