-remove trailing whitespace
[oweals/gnunet.git] / src / include / gnunet_testbed_logger_service.h
1 /*
2       This file is part of GNUnet
3       (C) 2008--2013 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 include/gnunet_testbed_logger_service.h
23  * @brief API for submitting data to the testbed logger service
24  * @author Sree Harsha Totakura <sreeharsha@totakura.in>
25  */
26
27 #ifndef GNUNET_TESTBED_LOGGER_SERVICE_H
28 #define GNUNET_TESTBED_LOGGER_SERVICE_H
29
30 #ifdef __cplusplus
31 extern "C"
32 {
33 #if 0                           /* keep Emacsens' auto-indent happy */
34 }
35 #endif
36 #endif
37
38 #include "gnunet_configuration_lib.h"
39
40 /**
41  * Opaque handle for the logging service
42  */
43 struct GNUNET_TESTBED_LOGGER_Handle;
44
45
46 /**
47  * Connect to the testbed logger service
48  *
49  * @param cfg configuration to use
50  * @return the handle which can be used for sending data to the service; NULL
51  *           upon any error
52  */
53 struct GNUNET_TESTBED_LOGGER_Handle *
54 GNUNET_TESTBED_LOGGER_connect (const struct GNUNET_CONFIGURATION_Handle *cfg);
55
56
57 /**
58  * Disconnect from the logger service.  Also cancels any pending send handles.
59  *
60  * @param h the logger handle
61  */
62 void
63 GNUNET_TESTBED_LOGGER_disconnect (struct GNUNET_TESTBED_LOGGER_Handle *h);
64
65
66 /**
67  * Functions of this type are called to notify a successful transmission of the
68  * message to the logger service
69  *
70  * @param cls the closure given to GNUNET_TESTBED_LOGGER_send()
71  * @param size the amount of data sent
72  */
73 typedef void (*GNUNET_TESTBED_LOGGER_FlushCompletion) (void *cls, size_t size);
74
75
76 /**
77  * Send data to be logged to the logger service.  The data will be buffered and
78  * will be sent upon an explicit call to GNUNET_TESTBED_LOGGER_flush() or upon
79  * exceeding a threshold size.
80  *
81  * @param h the logger handle
82  * @param data the data to send;
83  * @param size how many bytes of data to send
84  */
85 void
86 GNUNET_TESTBED_LOGGER_write (struct GNUNET_TESTBED_LOGGER_Handle *h,
87                              const void *data, size_t size);
88
89
90 /**
91  * Flush the buffered data to the logger service
92  *
93  * @param h the logger handle
94  * @param timeout how long to wait before calling the flust completion callback
95  * @param cb the callback to call after the data is flushed
96  * @param cb_cls the closure for the above callback
97  */
98 void
99 GNUNET_TESTBED_LOGGER_flush (struct GNUNET_TESTBED_LOGGER_Handle *h,
100                              struct GNUNET_TIME_Relative timeout,
101                              GNUNET_TESTBED_LOGGER_FlushCompletion cb,
102                              void *cb_cls);
103
104
105 /**
106  * Cancel notification upon flush.  Should only be used when the flush
107  * completion callback given to GNUNET_TESTBED_LOGGER_flush() is not already
108  * called.
109  *
110  * @param h the logger handle
111  */
112 void
113 GNUNET_TESTBED_LOGGER_flush_cancel (struct GNUNET_TESTBED_LOGGER_Handle *h);
114
115
116 #if 0                           /* keep Emacsens' auto-indent happy */
117 {
118 #endif
119 #ifdef __cplusplus
120 }
121 #endif
122
123 #endif  /* GNUNET_TESTBED_LOGGER_SERVICE_H */
124
125 /* End of gnunet_testbed_logger_service.h */