Index: src/libchcore/TTaskLocalStats.h
===================================================================
diff -u -r12a1725bfd04b0f55fd0fda302975fdcd4174943 -ra5f396da5ed5ffb3fcd9fdf22afb5a7fd07e1ab8
--- src/libchcore/TTaskLocalStats.h	(.../TTaskLocalStats.h)	(revision 12a1725bfd04b0f55fd0fda302975fdcd4174943)
+++ src/libchcore/TTaskLocalStats.h	(.../TTaskLocalStats.h)	(revision a5f396da5ed5ffb3fcd9fdf22afb5a7fd07e1ab8)
@@ -26,6 +26,7 @@
 #include "libchcore.h"
 #include "ESubTaskTypes.h"
 #include "TSubTaskStatsInfo.h"
+#include "TTaskStatsSnapshot.h"
 
 BEGIN_CHCORE_NAMESPACE
 
@@ -61,17 +62,17 @@
 	~TTaskLocalStatsInfo();
 
 	void Clear();
-	void GetSnapshot(TTaskStatsSnapshot& rSnapshot) const;
+	void GetSnapshot(TTaskStatsSnapshotPtr& spSnapshot) const;
 
 	void SetCurrentSubOperationType(ESubOperationType eSubOperationType);
 
+	bool IsRunning() const;
+
 protected:
 	// running/not running state
 	void MarkTaskAsRunning();
 	void MarkTaskAsNotRunning();
 
-	bool IsRunning() const;
-
 	// time tracking
 	void EnableTimeTracking();
 	void DisableTimeTracking();
@@ -81,25 +82,18 @@
 	void UpdateTime(boost::upgrade_lock<boost::shared_mutex>& lock) const;
 #pragma warning(pop)
 
-	void SetTimeElapsed(time_t timeElapsed);
-	time_t GetTimeElapsed();
+	void SetTimeElapsed(unsigned long long timeElapsed);
+	unsigned long long GetTimeElapsed();
 
-	// current subtask
-	ESubOperationType GetCurrentSubOperationType() const;
-
 private:
 	TTaskLocalStatsInfo(const TTaskLocalStatsInfo&);
 	TTaskLocalStatsInfo& operator=(const TTaskLocalStatsInfo&);
 
 private:
 	volatile bool m_bTaskIsRunning;
 
-	// time
-	mutable time_t m_timeElapsed;
-	mutable time_t m_timeLast;
+	mutable TSimpleTimer m_tTimer;
 
-	volatile ESubOperationType m_eCurrentSubOperationType;
-
 #pragma warning(push)
 #pragma warning(disable: 4251)
 	mutable boost::shared_mutex m_lock;