MCPcopy Create free account
hub / github.com/SakuraEngine/SakuraEngine / PatternAndSink

Method PatternAndSink

modules/core/core/src/core/log/log_manager.cpp:147–199  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

145}
146
147void LogManager::PatternAndSink(const LogEvent& event, skr::StringView formatted_message) SKR_NOEXCEPT
148{
149 static thread_local skr::FlatHashSet<skr_guid_t, skr::guid::hash> patterns_set_;
150 patterns_set_.clear();
151 {
152 SkrZoneScopedN("PatternAll");
153 for (auto&& [id, sink] : sinks_)
154 {
155 auto pattern_id = sink->get_pattern();
156 auto&& iter = patterns_set_.find(pattern_id);
157 if (iter != patterns_set_.end())
158 continue;
159
160 if (auto p = LogManager::QueryPattern(pattern_id))
161 {
162 SkrZoneScopedN("LogPattern::Pattern");
163
164 [[maybe_unused]]
165 auto& _ = p->pattern(event, formatted_message);
166 patterns_set_.insert(pattern_id);
167 }
168 else
169 {
170 SKR_UNREACHABLE_CODE();
171 }
172 }
173 }
174
175 {
176 SkrZoneScopedN("SinkAll");
177 for (auto&& [id, sink] : sinks_)
178 {
179 auto pattern_id = sink->get_pattern();
180
181 if (auto p = LogManager::QueryPattern(pattern_id))
182 {
183 SkrZoneScopedN("LogSink::Sink");
184
185 sink->sink(event, p->last_result().view());
186 }
187 else
188 {
189 SKR_UNREACHABLE_CODE();
190 }
191 }
192 }
193 const bool bInplaceLog = !LogManager::Get() || !LogManager::Get()->TryGetWorker();
194 const bool bFlushImmediate = LogConstants::gFlushBehavior == LogFlushBehavior::kFlushImmediate;
195 if (bInplaceLog || bFlushImmediate)
196 {
197 FlushAllSinks();
198 }
199}
200
201void LogManager::FlushAllSinks() SKR_NOEXCEPT
202{

Callers 2

patternAndSinkMethod · 0.80
sinkDefaultImmediateMethod · 0.80

Calls 8

patternMethod · 0.80
sinkMethod · 0.80
GetFunction · 0.50
clearMethod · 0.45
findMethod · 0.45
endMethod · 0.45
insertMethod · 0.45
viewMethod · 0.45

Tested by

no test coverage detected