d16b1a85688e856654204e04e22baa6730a014f3
[oweals/gnunet.git] / src / fs / gnunet-service-fs.h
1 /*
2      This file is part of GNUnet.
3      (C) 2009, 2010 Christian Grothoff (and other contributing authors)
4
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.
9
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.
14
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.
19 */
20
21 /**
22  * @file fs/gnunet-service-fs.h
23  * @brief shared data structures of gnunet-service-fs.c
24  * @author Christian Grothoff
25  */
26 #ifndef GNUNET_SERVICE_FS_H
27 #define GNUNET_SERVICE_FS_H
28
29 #include "gnunet_util_lib.h"
30 #include "gnunet_statistics_service.h"
31 #include "gnunet_transport_service.h"
32 #include "gnunet_core_service.h"
33 #include "gnunet_block_lib.h"
34 #include "fs.h"
35
36 /**
37  * A connected peer.
38  */
39 struct GSF_ConnectedPeer;
40
41 /**
42  * An active request.
43  */
44 struct GSF_PendingRequest;
45
46 /**
47  * A local client.
48  */
49 struct GSF_LocalClient;
50
51
52 /**
53  * Our connection to the datastore.
54  */
55 extern struct GNUNET_DATASTORE_Handle *GSF_dsh;
56
57 /**
58  * Our configuration.
59  */
60 extern const struct GNUNET_CONFIGURATION_Handle *GSF_cfg;
61
62 /**
63  * Handle for reporting statistics.
64  */
65 extern struct GNUNET_STATISTICS_Handle *GSF_stats;
66
67 /**
68  * Pointer to handle to the core service (points to NULL until we've
69  * connected to it).
70  */
71 extern struct GNUNET_CORE_Handle *GSF_core;
72
73 /**
74  * Handle for DHT operations.
75  */
76 extern struct GNUNET_DHT_Handle *GSF_dht;
77
78 /**
79  * How long do requests typically stay in the routing table?
80  */
81 extern struct GNUNET_LOAD_Value *GSF_rt_entry_lifetime;
82
83 /**
84  * Typical priorities we're seeing from other peers right now.  Since
85  * most priorities will be zero, this value is the weighted average of
86  * non-zero priorities seen "recently".  In order to ensure that new
87  * values do not dramatically change the ratio, values are first
88  * "capped" to a reasonable range (+N of the current value) and then
89  * averaged into the existing value by a ratio of 1:N.  Hence
90  * receiving the largest possible priority can still only raise our
91  * "current_priorities" by at most 1.
92  */
93 extern double GSF_current_priorities;
94
95 /**
96  * How many query messages have we received 'recently' that 
97  * have not yet been claimed as cover traffic?
98  */
99 extern unsigned int GSF_cover_query_count;
100
101
102 /**
103  * Our block context.
104  */
105 extern struct GNUNET_BLOCK_Context *GSF_block_ctx;
106
107
108
109
110 #endif
111 /* end of gnunet-service-fs.h */