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