From 2f1eb67ddd8bd5588778a75d566672e0b2d3427c Mon Sep 17 00:00:00 2001 From: drageryd <4681360+drageryd@users.noreply.github.com> Date: Wed, 27 Oct 2021 08:29:18 +0200 Subject: [PATCH] Support to add unsigned long long and long long as fields To be able to send large integers such as nanosecond timestamps for syslog and Chronograf logging from esp32. Currently casting to a smaller data type results in truncation, double will not have the i suffix and casting to string (+"i") before calling addField gets wrapped in quotation marks so database treats it as string. Fixes #164 --- src/Point.cpp | 12 ++++++++++++ src/Point.h | 2 ++ 2 files changed, 14 insertions(+) diff --git a/src/Point.cpp b/src/Point.cpp index c192df7..205b47d 100644 --- a/src/Point.cpp +++ b/src/Point.cpp @@ -46,6 +46,18 @@ void Point::addTag(String name, String value) { _tags += escapeKey(value); } +void Point::addField(String name, long long value) { + char buff[50]; + snprintf(buff, 50, "%lld", value); + putField(name, String(buff)+"i"); +} + +void Point::addField(String name, unsigned long long value) { + char buff[50]; + snprintf(buff, 50, "%llu", value); + putField(name, String(buff)+"i"); +} + void Point::addField(String name, const char *value) { putField(name, "\"" + escapeValue(value) + "\""); } diff --git a/src/Point.h b/src/Point.h index 0231f4f..3d449ff 100644 --- a/src/Point.h +++ b/src/Point.h @@ -52,6 +52,8 @@ friend class InfluxDBClient; void addField(String name, unsigned long value) { putField(name, String(value)+"i"); } void addField(String name, bool value) { putField(name, bool2string(value)); } void addField(String name, String value) { addField(name, value.c_str()); } + void addField(String name, long long value); + void addField(String name, unsigned long long value); void addField(String name, const char *value); // Set timestamp to `now()` and store it in specified precision, nanoseconds by default. Date and time must be already set. See `configTime` in the device API void setTime(WritePrecision writePrecision = WritePrecision::NS);