GNUnet is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
- by the Free Software Foundation; either version 2, or (at your
+ by the Free Software Foundation; either version 3, or (at your
option) any later version.
GNUnet is distributed in the hope that it will be useful, but
#include "gnunet_util_lib.h"
#include "gnunet_time_lib.h"
-#define MAX_NUMBER_HOSTLISTS 4
+/**
+ * Maximum number of hostlist that are saved
+ */
+#define MAX_NUMBER_HOSTLISTS 30
-/*
+/**
+ * Time intervall hostlists are saved to disk
+ */
+#define SAVING_INTERVALL GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_MINUTES, 30)
+
+/**
+ * Time interval between two hostlist tests
+ */
+#define TESTING_INTERVALL GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 3)
+
+/**
+ * Time interval for download dispatcher before a download is re-scheduled
+ */
+#define WAITING_INTERVALL GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 1)
+
+/**
* Defines concerning the hostlist quality metric
*/
+/**
+ * Initial quality of a new created hostlist
+ */
#define HOSTLIST_INITIAL 10000
+
+/**
+ * Value subtracted each time a hostlist download fails
+ */
#define HOSTLIST_FAILED_DOWNLOAD 100
+
+/**
+ * Value added each time a hostlist download is successful
+ */
#define HOSTLIST_SUCCESSFUL_DOWNLOAD 100
-/*
- * a single hostlist obtained by hostlist advertisements
+/**
+ * Value added for each valid HELLO recived during a hostlist download
*/
-struct GNUNET_Hostlist
-{
- struct GNUNET_Hostlist * prev;
- struct GNUNET_Hostlist * next;
- /*
- * peer offering the hostlist
- */
- struct GNUNET_PeerIdentity peer;
- /*
- * URI where hostlist can be obtained
- */
- char * hostlist_uri;
- /*
- * number of HELLO messages obtained during last download
- */
- unsigned long hello_count;
- /*
- * number of times the hostlist was obtained
- */
- unsigned long times_used;
- /*
- * time the hostlist advertisement was recieved and the entry was created
- */
- struct GNUNET_TIME_Absolute time_creation;
- /*
- * last time the hostlist was obtained
- */
- struct GNUNET_TIME_Absolute time_last_usage;
- /*
- * value describing the quality of the hostlist, the bigger the better but (should) never < 0
- * used for deciding which hostlist is replaced if MAX_NUMBER_HOSTLISTS in data structure is reached
- * intial value = HOSTLIST_INITIAL
- * increased every successful download by HOSTLIST_SUCCESSFULL_DOWNLOAD
- * increased every successful download by number of obtained HELLO messages
- * decreased every failed download by HOSTLIST_SUCCESSFULL_DOWNLOAD
- */
- uint64_t quality;
-};
+#define HOSTLIST_SUCCESSFUL_HELLO 1
+
/**