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 1
+/**
+ * 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
-{
- /*
- * 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
+
/**
* Start downloading hostlists from hostlist servers as necessary.
*
* @param c the configuration to use
- * @param s the scheduler to use
* @param st hande for publishing statistics
* @param ch set to handler for connect notifications
* @param dh set to handler for disconnect notifications
*/
int
GNUNET_HOSTLIST_client_start (const struct GNUNET_CONFIGURATION_Handle *c,
- struct GNUNET_SCHEDULER_Handle *s,
- struct GNUNET_STATISTICS_Handle *st,
- GNUNET_CORE_ConnectEventHandler *ch,
- GNUNET_CORE_DisconnectEventHandler *dh,
- GNUNET_CORE_MessageCallback *msgh,
- int learn);
+ struct GNUNET_STATISTICS_Handle *st,
+ GNUNET_CORE_ConnectEventHandler *ch,
+ GNUNET_CORE_DisconnectEventHandler *dh,
+ GNUNET_CORE_MessageCallback *msgh, int learn);
/**