More autoconf work
[collectd.git] / src / libcollectdclient / collectd / client.h
index 1494c8d..ae741eb 100644 (file)
@@ -1,22 +1,27 @@
 /**
- * libcollectdclient - src/libcollectdclient/client.h
- * Copyright (C) 2008  Florian octo Forster
+ * libcollectdclient - src/libcollectdclient/collectd/client.h
+ * Copyright (C) 2008-2012  Florian octo Forster
  *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; only version 2 of the License is applicable.
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
  *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
  *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
  *
  * Authors:
- *   Florian octo Forster <octo at verplant.org>
+ *   Florian octo Forster <octo at collectd.org>
  **/
 
 #ifndef LIBCOLLECTD_COLLECTDCLIENT_H
 
 #include "lcc_features.h"
 
+/* COLLECTD_TRACE is the environment variable used to control trace output. When
+ * set to something non-zero, all lines sent to / received from the daemon are
+ * printed to STDOUT. */
+#ifndef LCC_TRACE_ENV
+#define LCC_TRACE_ENV "COLLECTD_TRACE"
+#endif
+
 /*
  * Includes (for data types)
  */
-#if HAVE_STDINT_H
-# include <stdint.h>
-#endif
+#include <stdint.h>
 #include <inttypes.h>
 #include <time.h>
 
@@ -43,9 +53,9 @@
  * Types
  */
 #define LCC_TYPE_COUNTER 0
-#define LCC_TYPE_GAUGE   1
-#define LCC_TYPE_DERIVE   2
-#define LCC_TYPE_ABSOLUTE   3
+#define LCC_TYPE_GAUGE 1
+#define LCC_TYPE_DERIVE 2
+#define LCC_TYPE_ABSOLUTE 3
 
 LCC_BEGIN_DECLS
 
@@ -54,17 +64,15 @@ typedef double gauge_t;
 typedef uint64_t derive_t;
 typedef uint64_t absolute_t;
 
-union value_u
-{
+union value_u {
   counter_t counter;
-  gauge_t   gauge;
-  derive_t  derive;
+  gauge_t gauge;
+  derive_t derive;
   absolute_t absolute;
 };
 typedef union value_u value_t;
 
-struct lcc_identifier_s
-{
+struct lcc_identifier_s {
   char host[LCC_NAME_LEN];
   char plugin[LCC_NAME_LEN];
   char plugin_instance[LCC_NAME_LEN];
@@ -72,19 +80,20 @@ struct lcc_identifier_s
   char type_instance[LCC_NAME_LEN];
 };
 typedef struct lcc_identifier_s lcc_identifier_t;
-#define LCC_IDENTIFIER_INIT { "localhost", "", "", "", "" }
+#define LCC_IDENTIFIER_INIT                                                    \
+  { "localhost", "", "", "", "" }
 
-struct lcc_value_list_s
-{
+struct lcc_value_list_s {
   value_t *values;
-  int     *values_types;
-  size_t   values_len;
-  time_t   time;
-  int      interval;
+  int *values_types;
+  size_t values_len;
+  double time;
+  double interval;
   lcc_identifier_t identifier;
 };
 typedef struct lcc_value_list_s lcc_value_list_t;
-#define LCC_VALUE_LIST_INIT { NULL, NULL, 0, 0, 0, LCC_IDENTIFIER_INIT }
+#define LCC_VALUE_LIST_INIT                                                    \
+  { NULL, NULL, 0, 0, 0, LCC_IDENTIFIER_INIT }
 
 struct lcc_connection_s;
 typedef struct lcc_connection_s lcc_connection_t;
@@ -92,35 +101,41 @@ typedef struct lcc_connection_s lcc_connection_t;
 /*
  * Functions
  */
-int lcc_connect (const char *address, lcc_connection_t **ret_con);
-int lcc_disconnect (lcc_connection_t *c);
-#define LCC_DESTROY(c) do { lcc_disconnect (c); (c) = NULL; } while (0)
+int lcc_connect(const char *address, lcc_connection_t **ret_con);
+int lcc_disconnect(lcc_connection_t *c);
+#define LCC_DESTROY(c)                                                         \
+  do {                                                                         \
+    lcc_disconnect(c);                                                         \
+    (c) = NULL;                                                                \
+  } while (0)
 
-int lcc_getval (lcc_connection_t *c, lcc_identifier_t *ident,
-    size_t *ret_values_num, gauge_t **ret_values, char ***ret_values_names);
+int lcc_getval(lcc_connection_t *c, lcc_identifier_t *ident,
+               size_t *ret_values_num, gauge_t **ret_values,
+               char ***ret_values_names);
 
-int lcc_putval (lcc_connection_t *c, const lcc_value_list_t *vl);
+int lcc_putval(lcc_connection_t *c, const lcc_value_list_t *vl);
 
-int lcc_flush (lcc_connection_t *c, const char *plugin,
-    lcc_identifier_t *ident, int timeout);
+int lcc_flush(lcc_connection_t *c, const char *plugin, lcc_identifier_t *ident,
+              int timeout);
 
-int lcc_listval (lcc_connection_t *c,
-    lcc_identifier_t **ret_ident, size_t *ret_ident_num);
+int lcc_listval(lcc_connection_t *c, lcc_identifier_t **ret_ident,
+                size_t *ret_ident_num);
 
 /* TODO: putnotif */
 
-const char *lcc_strerror (lcc_connection_t *c);
+const char *lcc_strerror(lcc_connection_t *c);
 
-int lcc_identifier_to_string (lcc_connection_t *c,
-    char *string, size_t string_size, const lcc_identifier_t *ident);
-int lcc_string_to_identifier (lcc_connection_t *c,
-    lcc_identifier_t *ident, const char *string);
+int lcc_identifier_to_string(lcc_connection_t *c, char *string,
+                             size_t string_size, const lcc_identifier_t *ident);
+int lcc_string_to_identifier(lcc_connection_t *c, lcc_identifier_t *ident,
+                             const char *string);
 
 /* Compares the identifiers "i0" and "i1" and returns less than zero or greater
  * than zero if "i0" is smaller than or greater than "i1", respectively. If
  * "i0" and "i1" are identical, zero is returned. */
-int lcc_identifier_compare (const lcc_identifier_t *i0,
-    const lcc_identifier_t *i1);
+int lcc_identifier_compare(const void *i0, const void *i1);
+int lcc_sort_identifiers(lcc_connection_t *c, lcc_identifier_t *idents,
+                         size_t idents_num);
 
 LCC_END_DECLS