Index: src/libchcore/TTaskLocalStats.cpp =================================================================== diff -u -N -r12a1725bfd04b0f55fd0fda302975fdcd4174943 -ra5f396da5ed5ffb3fcd9fdf22afb5a7fd07e1ab8 --- src/libchcore/TTaskLocalStats.cpp (.../TTaskLocalStats.cpp) (revision 12a1725bfd04b0f55fd0fda302975fdcd4174943) +++ src/libchcore/TTaskLocalStats.cpp (.../TTaskLocalStats.cpp) (revision a5f396da5ed5ffb3fcd9fdf22afb5a7fd07e1ab8) @@ -41,10 +41,8 @@ TTaskProcessingGuard::~TTaskProcessingGuard() { - if(!m_bRunningStatePaused) - m_rLocalStats.MarkTaskAsNotRunning(); - if(!m_bTimeTrackingPaused) - m_rLocalStats.DisableTimeTracking(); + m_rLocalStats.MarkTaskAsNotRunning(); + m_rLocalStats.DisableTimeTracking(); } void TTaskProcessingGuard::PauseTimeTracking() @@ -86,10 +84,7 @@ //////////////////////////////////////////////////////////////////////////////// // TTasksGlobalStats members TTaskLocalStatsInfo::TTaskLocalStatsInfo() : - m_bTaskIsRunning(false), - m_timeElapsed(0), - m_timeLast(-1), - m_eCurrentSubOperationType(eSubOperation_None) + m_bTaskIsRunning(false) { } @@ -100,35 +95,27 @@ void TTaskLocalStatsInfo::Clear() { m_bTaskIsRunning = false; - m_timeElapsed = 0; - m_timeLast = -1; - - m_eCurrentSubOperationType = eSubOperation_None; + m_tTimer.Reset(); } -void TTaskLocalStatsInfo::GetSnapshot(TTaskStatsSnapshot& rSnapshot) const +void TTaskLocalStatsInfo::GetSnapshot(TTaskStatsSnapshotPtr& spSnapshot) const { - rSnapshot.Clear(); - boost::upgrade_lock lock(m_lock); UpdateTime(lock); - rSnapshot.SetIsTaskIsRunning(m_bTaskIsRunning); - rSnapshot.SetCurrentSubOperationType(m_eCurrentSubOperationType); - rSnapshot.SetTimeElapsed(m_timeElapsed); + spSnapshot->SetTaskRunning(m_bTaskIsRunning); + spSnapshot->SetTimeElapsed(m_tTimer.GetTotalTime()); } void TTaskLocalStatsInfo::MarkTaskAsRunning() { boost::unique_lock lock(m_lock); - if(!m_bTaskIsRunning) - m_bTaskIsRunning = true; + m_bTaskIsRunning = true; } void TTaskLocalStatsInfo::MarkTaskAsNotRunning() { boost::unique_lock lock(m_lock); - if(m_bTaskIsRunning) - m_bTaskIsRunning = false; + m_bTaskIsRunning = false; } bool TTaskLocalStatsInfo::IsRunning() const @@ -137,63 +124,22 @@ return m_bTaskIsRunning; } -void TTaskLocalStatsInfo::SetTimeElapsed(time_t timeElapsed) +void TTaskLocalStatsInfo::EnableTimeTracking() { boost::unique_lock lock(m_lock); - m_timeElapsed = timeElapsed; + m_tTimer.Start(); } -time_t TTaskLocalStatsInfo::GetTimeElapsed() -{ - boost::upgrade_lock lock(m_lock); - UpdateTime(lock); - - return m_timeElapsed; -} - -void TTaskLocalStatsInfo::EnableTimeTracking() -{ - boost::upgrade_lock lock(m_lock); - if(m_timeLast == -1) - { - boost::upgrade_to_unique_lock lock_upgraded(lock); - m_timeLast = time(NULL); - } -} - void TTaskLocalStatsInfo::DisableTimeTracking() { - boost::upgrade_lock lock(m_lock); - UpdateTime(lock); - if(m_timeLast != -1) - { - boost::upgrade_to_unique_lock lock_upgraded(lock); - m_timeLast = -1; - } + boost::unique_lock lock(m_lock); + m_tTimer.Stop(); } void TTaskLocalStatsInfo::UpdateTime(boost::upgrade_lock& lock) const { - if(m_timeLast != -1) - { - time_t timeCurrent = time(NULL); - - boost::upgrade_to_unique_lock lock_upgraded(lock); - m_timeElapsed += timeCurrent - m_timeLast; - m_timeLast = timeCurrent; - } + boost::upgrade_to_unique_lock lock_upgraded(lock); + m_tTimer.Tick(); } -ESubOperationType TTaskLocalStatsInfo::GetCurrentSubOperationType() const -{ - boost::shared_lock lock(m_lock); - return m_eCurrentSubOperationType; -} - -void TTaskLocalStatsInfo::SetCurrentSubOperationType(ESubOperationType eSubOperationType) -{ - boost::unique_lock lock(m_lock); - m_eCurrentSubOperationType = eSubOperationType; -} - END_CHCORE_NAMESPACE