- doxygen
[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  * Opaque handle representing a send request
68  */
69 struct GNUNET_TESTBED_LOGGER_SendHandle;
70
71
72 /**
73  * Functions of this type are called to notify a successful transmission of the
74  * message to the logger service
75  *
76  * @param cls the closure given to GNUNET_TESTBED_LOGGER_send()
77  * @param size the amount of data sent
78  */
79 typedef void (*GNUNET_TESTBED_LOGGER_FlushCompletion) (void *cls, size_t size);
80
81
82 /**
83  * Send data to be logged to the logger service.  The data will be buffered and
84  * will be sent upon an explicit call to GNUNET_TESTBED_LOGGER_flush() or upon
85  * exceeding a threshold size.
86  *
87  * @param h the logger handle
88  * @param data the data to send;
89  * @param size how many bytes of data to send
90  */
91 void
92 GNUNET_TESTBED_LOGGER_write (struct GNUNET_TESTBED_LOGGER_Handle *h,
93                              const void *data, size_t size);
94
95
96 /**
97  * Flush the buffered data to the logger service
98  *
99  * @param h the logger handle
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                              GNUNET_TESTBED_LOGGER_FlushCompletion cb,
106                              void *cb_cls);
107
108
109 /**
110  * Cancel notification upon flush.
111  *
112  * @param h the logger handle
113  */
114 void
115 GNUNET_TESTBED_LOGGER_flush_cancel (struct GNUNET_TESTBED_LOGGER_Handle *h);
116
117
118 #if 0                           /* keep Emacsens' auto-indent happy */
119 {
120 #endif
121 #ifdef __cplusplus
122 }
123 #endif
124
125 #endif  /* GNUNET_TESTBED_LOGGER_SERVICE_H */
126
127 /* End of gnunet_testbed_logger_service.h */