| 2717 | } |
| 2718 | |
| 2719 | void PerformanceTracker::checkpoint(const std::string& id, const char* file, base::type::LineNumber line, |
| 2720 | const char* func) { |
| 2721 | #if !defined(ELPP_DISABLE_PERFORMANCE_TRACKING) && ELPP_LOGGING_ENABLED |
| 2722 | if (m_enabled) { |
| 2723 | base::threading::ScopedLock scopedLock(lock()); |
| 2724 | base::utils::DateTime::gettimeofday(&m_endTime); |
| 2725 | base::type::string_t formattedTime = m_hasChecked ? getFormattedTimeTaken(m_lastCheckpointTime) : ELPP_LITERAL(""); |
| 2726 | PerformanceTrackingData data(PerformanceTrackingData::DataType::Checkpoint); |
| 2727 | data.init(this); |
| 2728 | data.m_checkpointId = id; |
| 2729 | data.m_file = file; |
| 2730 | data.m_line = line; |
| 2731 | data.m_func = func; |
| 2732 | data.m_formattedTimeTaken = formattedTime; |
| 2733 | PerformanceTrackingCallback* callback = nullptr; |
| 2734 | for (const std::pair<std::string, base::type::PerformanceTrackingCallbackPtr>& h |
| 2735 | : ELPP->m_performanceTrackingCallbacks) { |
| 2736 | callback = h.second.get(); |
| 2737 | if (callback != nullptr && callback->enabled()) { |
| 2738 | callback->handle(&data); |
| 2739 | } |
| 2740 | } |
| 2741 | base::utils::DateTime::gettimeofday(&m_lastCheckpointTime); |
| 2742 | m_hasChecked = true; |
| 2743 | m_lastCheckpointId = id; |
| 2744 | } |
| 2745 | #endif // !defined(ELPP_DISABLE_PERFORMANCE_TRACKING) && ELPP_LOGGING_ENABLED |
| 2746 | ELPP_UNUSED(id); |
| 2747 | ELPP_UNUSED(file); |
| 2748 | ELPP_UNUSED(line); |
| 2749 | ELPP_UNUSED(func); |
| 2750 | } |
| 2751 | |
| 2752 | const base::type::string_t PerformanceTracker::getFormattedTimeTaken(struct timeval startTime) const { |
| 2753 | if (ELPP->hasFlag(LoggingFlag::FixedTimeFormat)) { |