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)
36 if (_stored_events.size() < _capacity)
39 _stored_events.emplace_back(std::string{thread_id}, std::string{thread_name}, std::move(transit_event));
44 StoredTransitEvent& ste = _stored_events[_index];
46 ste = StoredTransitEvent{std::string{thread_id}, std::string{thread_name}, std::move(transit_event)};
49 if (_index < _capacity - 1)
61 void process(std::function<
void(
TransitEvent const&, std::string_view thread_id, std::string_view thread_name)>
const& callback)
64 uint32_t index = _index;
67 for (uint32_t i = 0; i < _stored_events.size(); ++i)
70 callback(_stored_events[index].transit_event, _stored_events[index].thread_id,
71 _stored_events[index].thread_name);
74 if (index < _stored_events.size() - 1)
85 _stored_events.clear();
89 void set_capacity(uint32_t capacity)
91 if (_capacity != capacity)
95 _stored_events.clear();
96 _stored_events.reserve(_capacity);
101 struct StoredTransitEvent
103 StoredTransitEvent(std::string thread_id, std::string thread_name,
TransitEvent transit_event)
104 : thread_id(std::move(thread_id)),
105 thread_name(std::move(thread_name)),
106 transit_event(std::move(transit_event))
114 std::string thread_id;
115 std::string thread_name;
120 uint32_t _capacity{0};
122 std::vector<StoredTransitEvent> _stored_events;
Stores N max messages per logger name in a vector.
Definition: BacktraceStorage.h:28
Definition: TransitEvent.h:32
Setups a signal handler to handle fatal signals.
Definition: BackendManager.h:24