9 #include "quill/backend/TransitEvent.h" 10 #include "quill/core/Attributes.h" 15 #include <string_view> 34 void store(
TransitEvent transit_event, std::string_view
const& thread_id, std::string_view
const& thread_name)
41 if (_stored_events.size() < _capacity)
44 _stored_events.emplace_back(std::string{thread_id}, std::string{thread_name}, std::move(transit_event));
49 StoredTransitEvent& ste = _stored_events[_index];
51 ste = StoredTransitEvent{std::string{thread_id}, std::string{thread_name}, std::move(transit_event)};
54 if (_index < _capacity - 1)
66 void process(std::function<
void(
TransitEvent const&, std::string_view thread_id, std::string_view thread_name)>
const& callback)
69 size_t index = _index;
72 for (
size_t i = 0; i < _stored_events.size(); ++i)
75 callback(_stored_events[index].transit_event, _stored_events[index].thread_id,
76 _stored_events[index].thread_name);
79 if (index < _stored_events.size() - 1)
90 _stored_events.clear();
95 void set_capacity(uint32_t capacity)
97 if (_capacity != capacity)
101 _stored_events.clear();
102 _stored_events.reserve(_capacity);
107 struct StoredTransitEvent
109 StoredTransitEvent(std::string thread_id, std::string thread_name,
TransitEvent transit_event)
110 : thread_id(std::move(thread_id)),
111 thread_name(std::move(thread_name)),
112 transit_event(std::move(transit_event))
120 std::string thread_id;
121 std::string thread_name;
126 uint32_t _capacity{0};
128 std::vector<StoredTransitEvent> _stored_events;
Stores N max messages per logger name in a vector.
Definition: BacktraceStorage.h:28
Definition: TransitEvent.h:33
Setups a signal handler to handle fatal signals.
Definition: BackendManager.h:28