| 2589 | } |
| 2590 | |
| 2591 | void PerformanceTracker::checkpoint(const std::string& id, const char* file, base::type::LineNumber line, |
| 2592 | const char* func) { |
| 2593 | #if !defined(ELPP_DISABLE_PERFORMANCE_TRACKING) && ELPP_LOGGING_ENABLED |
| 2594 | if (m_enabled) { |
| 2595 | base::threading::ScopedLock scopedLock(lock()); |
| 2596 | base::utils::DateTime::gettimeofday(&m_endTime); |
| 2597 | base::type::string_t formattedTime = m_hasChecked ? getFormattedTimeTaken(m_lastCheckpointTime) : ELPP_LITERAL(""); |
| 2598 | PerformanceTrackingData data(PerformanceTrackingData::DataType::Checkpoint); |
| 2599 | data.init(this); |
| 2600 | data.m_checkpointId = id; |
| 2601 | data.m_file = file; |
| 2602 | data.m_line = line; |
| 2603 | data.m_func = func; |
| 2604 | data.m_formattedTimeTaken = formattedTime; |
| 2605 | PerformanceTrackingCallback* callback = nullptr; |
| 2606 | for (const std::pair<std::string, base::type::PerformanceTrackingCallbackPtr>& h |
| 2607 | : ELPP->m_performanceTrackingCallbacks) { |
| 2608 | callback = h.second.get(); |
| 2609 | if (callback != nullptr && callback->enabled()) { |
| 2610 | callback->handle(&data); |
| 2611 | } |
| 2612 | } |
| 2613 | base::utils::DateTime::gettimeofday(&m_lastCheckpointTime); |
| 2614 | m_hasChecked = true; |
| 2615 | m_lastCheckpointId = id; |
| 2616 | } |
| 2617 | #endif // !defined(ELPP_DISABLE_PERFORMANCE_TRACKING) && ELPP_LOGGING_ENABLED |
| 2618 | ELPP_UNUSED(id); |
| 2619 | ELPP_UNUSED(file); |
| 2620 | ELPP_UNUSED(line); |
| 2621 | ELPP_UNUSED(func); |
| 2622 | } |
| 2623 | |
| 2624 | const base::type::string_t PerformanceTracker::getFormattedTimeTaken(struct timeval startTime) const { |
| 2625 | if (ELPP->hasFlag(LoggingFlag::FixedTimeFormat)) { |