@@ -190,24 +190,27 @@ class Span : public opentracing::Span {
190
190
: itr->second ;
191
191
}
192
192
193
+ void Log (opentracing::SystemTime timestamp,
194
+ std::initializer_list<
195
+ std::pair<opentracing::string_view, opentracing::Value>>
196
+ fieldPairs) noexcept override
197
+ {
198
+ doLog (timestamp, fieldPairs);
199
+ }
200
+
201
+ void Log (opentracing::SystemTime timestamp,
202
+ const std::vector<
203
+ std::pair<opentracing::string_view, opentracing::Value>>&
204
+ fieldPairs) noexcept override
205
+ {
206
+ doLog (timestamp, fieldPairs);
207
+ }
208
+
193
209
void Log (std::initializer_list<
194
210
std::pair<opentracing::string_view, opentracing::Value>>
195
211
fieldPairs) noexcept override
196
212
{
197
- std::lock_guard<std::mutex> lock (_mutex);
198
- if (!_context.isSampled ()) {
199
- return ;
200
- }
201
-
202
- std::vector<Tag> fields;
203
- fields.reserve (fieldPairs.size ());
204
- std::transform (
205
- std::begin (fieldPairs),
206
- std::end (fieldPairs),
207
- std::back_inserter (fields),
208
- [](const std::pair<opentracing::string_view, opentracing::Value>&
209
- pair) { return Tag (pair.first , pair.second ); });
210
- logFieldsNoLocking (std::begin (fields), std::end (fields));
213
+ doLog (SystemClock::now (), fieldPairs);
211
214
}
212
215
213
216
const SpanContext& context () const noexcept override
@@ -228,12 +231,31 @@ class Span : public opentracing::Span {
228
231
bool isFinished () const { return _duration != SteadyClock::duration (); }
229
232
230
233
template <typename FieldIterator>
231
- void logFieldsNoLocking (FieldIterator first, FieldIterator last) noexcept
234
+ void logFieldsNoLocking (const std::chrono::system_clock::time_point& timestamp, FieldIterator first, FieldIterator last) noexcept
232
235
{
233
- LogRecord log (SystemClock::now () , first, last);
236
+ LogRecord log (timestamp , first, last);
234
237
_logs.push_back (log);
235
238
}
236
239
240
+ template <typename Container>
241
+ void doLog (opentracing::SystemTime timestamp, Container fieldPairs) noexcept
242
+ {
243
+ std::lock_guard<std::mutex> lock (_mutex);
244
+ if (!_context.isSampled ()) {
245
+ return ;
246
+ }
247
+
248
+ std::vector<Tag> fields;
249
+ fields.reserve (fieldPairs.size ());
250
+ std::transform (
251
+ std::begin (fieldPairs),
252
+ std::end (fieldPairs),
253
+ std::back_inserter (fields),
254
+ [](const std::pair<opentracing::string_view, opentracing::Value>&
255
+ pair) { return Tag (pair.first , pair.second ); });
256
+ logFieldsNoLocking (timestamp, std::begin (fields), std::end (fields));
257
+ }
258
+
237
259
void setSamplingPriority (const opentracing::Value& value);
238
260
239
261
std::shared_ptr<const Tracer> _tracer;
0 commit comments