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