Index: src/libchcore/TSubTaskFastMove.h
===================================================================
diff -u -N -rd88274a4bbfd4ef005d44c4d179b7596cb627486 -rbebda797ec6983535a8940f8f9f15453fe6b1785
--- src/libchcore/TSubTaskFastMove.h	(.../TSubTaskFastMove.h)	(revision d88274a4bbfd4ef005d44c4d179b7596cb627486)
+++ src/libchcore/TSubTaskFastMove.h	(.../TSubTaskFastMove.h)	(revision bebda797ec6983535a8940f8f9f15453fe6b1785)
@@ -30,7 +30,35 @@
 BEGIN_CHCORE_NAMESPACE
 
 class TFileFiltersArray;
+class TReadBinarySerializer;
+class TWriteBinarySerializer;
 
+namespace details
+{
+	///////////////////////////////////////////////////////////////////////////
+	// TFastMoveProgressInfo
+
+	class TFastMoveProgressInfo : public TSubTaskProgressInfo
+	{
+	public:
+		TFastMoveProgressInfo();
+		virtual ~TFastMoveProgressInfo();
+
+		virtual void Serialize(TReadBinarySerializer& rSerializer);
+		virtual void Serialize(TWriteBinarySerializer& rSerializer) const;
+
+		virtual void ResetProgress();
+
+		void SetCurrentIndex(size_t stIndex);
+		void IncreaseCurrentIndex();
+		size_t GetCurrentIndex() const;
+
+	private:
+		size_t m_stCurrentIndex;
+		mutable boost::shared_mutex m_lock;
+	};
+}
+
 ///////////////////////////////////////////////////////////////////////////
 // TSubTaskFastMove
 
@@ -43,8 +71,16 @@
 	virtual ESubOperationResult Exec();
 	virtual ESubOperationType GetSubOperationType() const { return eSubOperation_Scanning; }
 
+	virtual TSubTaskProgressInfo& GetProgressInfo() { return m_tProgressInfo; }
+
 private:
 	int ScanDirectory(TSmartPath pathDirName, size_t stSrcIndex, bool bRecurse, bool bIncludeDirs, TFileFiltersArray& afFilters);
+
+private:
+#pragma warning(push)
+#pragma warning(disable: 4251)
+	details::TFastMoveProgressInfo m_tProgressInfo;
+#pragma warning(pop)
 };
 
 END_CHCORE_NAMESPACE