blob: ac6eb2b5cf2e58907e91d21ba322cb94f48f0661 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
#include "mock_span_context.h"
namespace opentracing {
BEGIN_OPENTRACING_ABI_NAMESPACE
namespace mocktracer {
MockSpanContext& MockSpanContext::operator=(MockSpanContext&& other) noexcept {
data_.trace_id = other.data_.trace_id;
data_.span_id = other.data_.span_id;
data_.baggage = std::move(other.data_.baggage);
return *this;
}
void MockSpanContext::ForeachBaggageItem(
std::function<bool(const std::string& key, const std::string& value)> f)
const {
std::lock_guard<std::mutex> lock_guard{baggage_mutex_};
for (const auto& baggage_item : data_.baggage) {
if (!f(baggage_item.first, baggage_item.second)) {
return;
}
}
}
void MockSpanContext::CopyData(SpanContextData& data) const {
data.trace_id = data_.trace_id;
data.span_id = data_.span_id;
std::lock_guard<std::mutex> lock_guard{baggage_mutex_};
data.baggage = data_.baggage;
}
std::unique_ptr<SpanContext> MockSpanContext::Clone() const noexcept try {
auto result = std::unique_ptr<MockSpanContext>{new MockSpanContext{}};
CopyData(result->data_);
return std::unique_ptr<SpanContext>{result.release()};
} catch (const std::exception& /*e*/) {
return nullptr;
}
} // namespace mocktracer
END_OPENTRACING_ABI_NAMESPACE
} // namespace opentracing
|