2b0a0c557eb00aafd024f53cffc47cc9a6320f41
[oweals/gnunet.git] / src / core / gnunet-service-core.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 core/gnunet-service-core.h
23  * @brief Globals for gnunet-service-core
24  * @author Christian Grothoff
25  */
26 #ifndef GNUNET_SERVICE_CORE_H
27 #define GNUNET_SERVICE_CORE_H
28
29
30
31 /**
32  * Opaque handle to a client.
33  */
34 struct GSC_Client;
35
36
37 /**
38  * Record kept for each request for transmission issued by a
39  * client that is still pending. (This struct is used by 
40  * both the 'CLIENTS' and 'SESSIONS' subsystems.)
41  */
42 struct GSC_ClientActiveRequest
43 {
44
45   /**
46    * Active requests are kept in a doubly-linked list of
47    * the respective target peer.
48    */
49   struct ClientActiveRequest *next;
50
51   /**
52    * Active requests are kept in a doubly-linked list of
53    * the respective target peer.
54    */
55   struct ClientActiveRequest *prev;
56
57   /**
58    * Which peer is the message going to be for?
59    */
60   struct GNUNET_PeerIdentity target;
61
62   /**
63    * Handle to the client.
64    */
65   struct GSC_Client *client_handle;
66
67   /**
68    * By what time would the client want to see this message out?
69    */
70   struct GNUNET_TIME_Absolute deadline;
71
72   /**
73    * How important is this request.
74    */
75   uint32_t priority;
76
77   /**
78    * How many bytes does the client intend to send?
79    */
80   uint16_t msize;
81
82   /**
83    * Unique request ID (in big endian).
84    */
85   uint16_t smr_id;
86
87 };
88
89
90 /**
91  * Our configuration.
92  */
93 extern const struct GNUNET_CONFIGURATION_Handle *GSC_cfg;
94
95 /**
96  * For creating statistics.
97  */
98 extern struct GNUNET_STATISTICS_Handle *GSC_stats;
99
100 /**
101  * Our identity.
102  */
103 extern struct GNUNET_PeerIdentity GSC_my_identity;
104
105 /**
106  * Our message stream tokenizer (for encrypted payload).
107  */
108 extern struct GNUNET_SERVER_MessageStreamTokenizer *GSC_mst;
109
110
111 #endif