@@ -126,23 +126,29 @@ namespace influxdb
126
126
return convert.str ();
127
127
}
128
128
129
- std::string toPrecision (TimePrecision precision, std::chrono::time_point<std::chrono::system_clock> timestamp)
129
+ template <class TimeUnit >
130
+ std::string toPrecision (std::chrono::time_point<std::chrono::system_clock> timestamp)
131
+ {
132
+ return std::to_string (std::chrono::duration_cast<TimeUnit>(timestamp.time_since_epoch ()).count ());
133
+ }
134
+
135
+ std::string toTimestampString (TimePrecision precision, std::chrono::time_point<std::chrono::system_clock> timestamp)
130
136
{
131
137
switch (precision)
132
138
{
133
139
case TimePrecision::Hours:
134
- return std::to_string (std::chrono::duration_cast <std::chrono::hours>(timestamp. time_since_epoch ()). count () );
140
+ return toPrecision <std::chrono::hours>(timestamp);
135
141
case TimePrecision::Minutes:
136
- return std::to_string (std::chrono::duration_cast <std::chrono::minutes>(timestamp. time_since_epoch ()). count () );
142
+ return toPrecision <std::chrono::minutes>(timestamp);
137
143
case TimePrecision::Seconds:
138
- return std::to_string (std::chrono::duration_cast <std::chrono::seconds>(timestamp. time_since_epoch ()). count () );
144
+ return toPrecision <std::chrono::seconds>(timestamp);
139
145
case TimePrecision::MilliSeconds:
140
- return std::to_string (std::chrono::duration_cast <std::chrono::milliseconds>(timestamp. time_since_epoch ()). count () );
146
+ return toPrecision <std::chrono::milliseconds>(timestamp);
141
147
case TimePrecision::MicroSeconds:
142
- return std::to_string (std::chrono::duration_cast <std::chrono::microseconds>(timestamp. time_since_epoch ()). count () );
148
+ return toPrecision <std::chrono::microseconds>(timestamp);
143
149
case TimePrecision::NanoSeconds:
144
150
default :
145
- return std::to_string (std::chrono::duration_cast <std::chrono::nanoseconds>(timestamp. time_since_epoch ()). count () );
151
+ return toPrecision <std::chrono::nanoseconds>(timestamp);
146
152
}
147
153
}
148
154
}
@@ -159,7 +165,7 @@ namespace influxdb
159
165
appendIfNotEmpty (line, formatTags (point.getTagSet ()), ' ,' );
160
166
appendIfNotEmpty (line, formatFields (point.getFieldSet ()), ' ' );
161
167
162
- return line.append (" " ).append (toPrecision (timePrecision, point.getTimestamp ()));
168
+ return line.append (" " ).append (toTimestampString (timePrecision, point.getTimestamp ()));
163
169
}
164
170
165
171
std::string LineProtocol::EscapeStringElement (LineProtocol::ElementType type, std::string_view element)
0 commit comments