]> git.proxmox.com Git - ceph.git/blob - ceph/src/jaegertracing/opentracing-cpp/mocktracer/include/opentracing/mocktracer/in_memory_recorder.h
update source to Ceph Pacific 16.2.2
[ceph.git] / ceph / src / jaegertracing / opentracing-cpp / mocktracer / include / opentracing / mocktracer / in_memory_recorder.h
1 #ifndef OPENTRACING_MOCKTRACER_IN_MEMORY_RECORDER_H
2 #define OPENTRACING_MOCKTRACER_IN_MEMORY_RECORDER_H
3
4 #include <opentracing/mocktracer/recorder.h>
5 #include <opentracing/mocktracer/symbols.h>
6 #include <mutex>
7 #include <vector>
8
9 namespace opentracing {
10 BEGIN_OPENTRACING_ABI_NAMESPACE
11 namespace mocktracer {
12 // InMemoryRecorder stores finished spans and provides accessors to them.
13 class OPENTRACING_MOCK_TRACER_API InMemoryRecorder : public Recorder {
14 public:
15 void RecordSpan(SpanData&& span_data) noexcept override;
16
17 // Returns a vector of all finished spans.
18 std::vector<SpanData> spans() const;
19
20 // Returns the number of finished spans.
21 size_t size() const;
22
23 // Returns the last finished span. Throws if no spans have been finished.
24 SpanData top() const;
25
26 private:
27 mutable std::mutex mutex_;
28 std::vector<SpanData> spans_;
29 };
30 } // namespace mocktracer
31 END_OPENTRACING_ABI_NAMESPACE
32 } // namespace opentracing
33
34 #endif // OPENTRACING_MOCKTRACER_IN_MEMORY_RECORDER_H