2
This file is part of GNUnet.
3
(C) 2009 Christian Grothoff (and other contributing authors)
5
GNUnet is free software; you can redistribute it and/or modify
6
it under the terms of the GNU General Public License as published
7
by the Free Software Foundation; either version 3, or (at your
8
option) any later version.
10
GNUnet is distributed in the hope that it will be useful, but
11
WITHOUT ANY WARRANTY; without even the implied warranty of
12
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13
General Public License for more details.
15
You should have received a copy of the GNU General Public License
16
along with GNUnet; see the file COPYING. If not, write to the
17
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18
Boston, MA 02111-1307, USA.
22
* @file hostlist/hostlist-client.h
23
* @brief hostlist support. Downloads HELLOs via HTTP.
24
* @author Christian Grothoff
27
#ifndef HOSTLIST_CLIENT_H
28
#define HOSTLIST_CLIENT_H
30
#include "gnunet_core_service.h"
31
#include "gnunet_statistics_service.h"
32
#include "gnunet_util_lib.h"
33
#include "gnunet_time_lib.h"
36
* Maximum number of hostlist that are saved
38
#define MAX_NUMBER_HOSTLISTS 30
41
* Time intervall hostlists are saved to disk
43
#define SAVING_INTERVALL GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_MINUTES, 30)
46
* Time interval between two hostlist tests
48
#define TESTING_INTERVALL GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 3)
51
* Time interval for download dispatcher before a download is re-scheduled
53
#define WAITING_INTERVALL GNUNET_TIME_relative_multiply (GNUNET_TIME_UNIT_SECONDS, 1)
56
* Defines concerning the hostlist quality metric
60
* Initial quality of a new created hostlist
62
#define HOSTLIST_INITIAL 10000
65
* Value subtracted each time a hostlist download fails
67
#define HOSTLIST_FAILED_DOWNLOAD 100
70
* Value added each time a hostlist download is successful
72
#define HOSTLIST_SUCCESSFUL_DOWNLOAD 100
75
* Value added for each valid HELLO recived during a hostlist download
77
#define HOSTLIST_SUCCESSFUL_HELLO 1
82
* Start downloading hostlists from hostlist servers as necessary.
84
* @param c the configuration to use
85
* @param st hande for publishing statistics
86
* @param ch set to handler for connect notifications
87
* @param dh set to handler for disconnect notifications
88
* @param msgh set to handler for message handler notifications
89
* @param learn set if client is learning new hostlists
90
* @return GNUNET_OK on success
93
GNUNET_HOSTLIST_client_start (const struct GNUNET_CONFIGURATION_Handle *c,
94
struct GNUNET_STATISTICS_Handle *st,
95
GNUNET_CORE_ConnectEventHandler *ch,
96
GNUNET_CORE_DisconnectEventHandler *dh,
97
GNUNET_CORE_MessageCallback *msgh, int learn);
101
* Stop downloading hostlists from hostlist servers as necessary.
104
GNUNET_HOSTLIST_client_stop (void);
108
/* end of hostlist-client.h */