X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Fhostlist%2Fhostlist-client.h;h=b29b96a042b32b1db782423030ea4fef81766b31;hb=c9821c80f60d980cbf8f973f78eed6094270a653;hp=378a919967293bb32ec399b82f43815038066705;hpb=967a3bbae2c2a7c6fe5c975f1ba6cdbbd17d183f;p=oweals%2Fgnunet.git diff --git a/src/hostlist/hostlist-client.h b/src/hostlist/hostlist-client.h index 378a91996..b29b96a04 100644 --- a/src/hostlist/hostlist-client.h +++ b/src/hostlist/hostlist-client.h @@ -4,7 +4,7 @@ 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 @@ -30,26 +30,72 @@ #include "gnunet_core_service.h" #include "gnunet_statistics_service.h" #include "gnunet_util_lib.h" +#include "gnunet_time_lib.h" + +/** + * 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 + +/** + * Value added for each valid HELLO recived during a hostlist download + */ +#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 * @param msgh set to handler for message handler notifications + * @param learn set if client is learning new hostlists * @return GNUNET_OK on success */ 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); + GNUNET_CORE_MessageCallback *msgh, + int learn); /**