Contur 2
Educational OS kernel simulator
Loading...
Searching...
No Matches
buffer_sink.h
Go to the documentation of this file.
1
3
4#pragma once
5
6#include <cstddef>
7#include <memory>
8#include <vector>
9
11
12namespace contur {
13
15 class BufferSink final : public ITraceSink
16 {
17 public:
20
22 ~BufferSink() override;
23
25 BufferSink(const BufferSink &) = delete;
26
28 BufferSink &operator=(const BufferSink &) = delete;
30 BufferSink(BufferSink &&) noexcept;
31
33 BufferSink &operator=(BufferSink &&) noexcept;
34
36 void write(const TraceEvent &event) override;
37
39 [[nodiscard]] std::vector<TraceEvent> snapshot() const;
40
42 void clear();
43
45 [[nodiscard]] std::size_t size() const;
46
47 private:
48 struct Impl;
49 std::unique_ptr<Impl> impl_;
50 };
51
52} // namespace contur
std::unique_ptr< Impl > impl_
Definition buffer_sink.h:49
BufferSink(BufferSink &&) noexcept
Move-constructs sink state.
BufferSink & operator=(const BufferSink &)=delete
Copy assignment is disabled.
~BufferSink() override
Destroys buffer sink.
BufferSink(const BufferSink &)=delete
Copy construction is disabled.
std::vector< TraceEvent > snapshot() const
Returns a copy of all captured trace events.
void write(const TraceEvent &event) override
Writes one trace event to the sink.
void clear()
Removes all buffered trace events.
BufferSink()
Constructs an empty buffer sink.
std::size_t size() const
Returns number of currently buffered events.
Sink interface that receives structured trace events.
Definition trace_sink.h:12
Definition block.h:15
Structured trace event record.
Definition trace_event.h:21
Trace sink interface for trace event consumers.