Skip to content

Commit cac71c0

Browse files
committed
Extract common code
1 parent 23d1cde commit cac71c0

File tree

1 file changed

+14
-8
lines changed

1 file changed

+14
-8
lines changed

src/LineProtocol.cxx

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -126,23 +126,29 @@ namespace influxdb
126126
return convert.str();
127127
}
128128

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)
130136
{
131137
switch (precision)
132138
{
133139
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);
135141
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);
137143
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);
139145
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);
141147
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);
143149
case TimePrecision::NanoSeconds:
144150
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);
146152
}
147153
}
148154
}
@@ -159,7 +165,7 @@ namespace influxdb
159165
appendIfNotEmpty(line, formatTags(point.getTagSet()), ',');
160166
appendIfNotEmpty(line, formatFields(point.getFieldSet()), ' ');
161167

162-
return line.append(" ").append(toPrecision(timePrecision, point.getTimestamp()));
168+
return line.append(" ").append(toTimestampString(timePrecision, point.getTimestamp()));
163169
}
164170

165171
std::string LineProtocol::EscapeStringElement(LineProtocol::ElementType type, std::string_view element)

0 commit comments

Comments
 (0)