Contur 2
Educational OS kernel simulator
Loading...
Searching...
No Matches
tracer.h
Go to the documentation of this file.
1
3
4#pragma once
5
6#include <memory>
7
9
10namespace contur {
11
12 class IClock;
13 class ITraceSink;
14
19 class Tracer final : public ITracer
20 {
21 public:
25 explicit Tracer(std::unique_ptr<ITraceSink> sink, const IClock &clock);
26
28 ~Tracer() override;
29
31 Tracer(const Tracer &) = delete;
32
34 Tracer &operator=(const Tracer &) = delete;
36 Tracer(Tracer &&) noexcept;
37
39 Tracer &operator=(Tracer &&) noexcept;
40
42 void trace(const TraceEvent &event) override;
43
45 void pushScope(std::string_view subsystem, std::string_view operation) override;
46
48 void popScope() override;
49
51 [[nodiscard]] std::uint32_t currentDepth() const noexcept override;
52
54 void setMinLevel(TraceLevel level) noexcept override;
55
57 [[nodiscard]] TraceLevel minLevel() const noexcept override;
58
60 [[nodiscard]] const IClock &clock() const noexcept override;
61
62 private:
63 struct Impl;
64 std::unique_ptr<Impl> impl_;
65 };
66
67} // namespace contur
Abstract clock interface for simulation time.
Definition clock.h:21
Sink interface that receives structured trace events.
Definition trace_sink.h:12
Tracer interface used by kernel subsystems.
Definition i_tracer.h:17
std::uint32_t currentDepth() const noexcept override
Returns current tracing depth for this tracer.
~Tracer() override
Destroys tracer and owned sink.
Tracer & operator=(const Tracer &)=delete
Copy assignment is disabled.
Tracer(const Tracer &)=delete
Copy construction is disabled.
const IClock & clock() const noexcept override
Returns tracer clock reference.
void trace(const TraceEvent &event) override
Emits a pre-constructed trace event.
void setMinLevel(TraceLevel level) noexcept override
Sets minimum event level that will be emitted.
Tracer(Tracer &&) noexcept
Move-constructs tracer state.
void popScope() override
Leaves the current tracing scope.
Tracer(std::unique_ptr< ITraceSink > sink, const IClock &clock)
Constructs an active tracer.
TraceLevel minLevel() const noexcept override
Returns minimum event level that will be emitted.
std::unique_ptr< Impl > impl_
Definition tracer.h:64
void pushScope(std::string_view subsystem, std::string_view operation) override
Enters a nested tracing scope.
Tracer interface for hierarchical event tracing.
Definition block.h:15
TraceLevel
Trace event severity.
Definition trace_level.h:13
Structured trace event record.
Definition trace_event.h:21