Index: src/libchcore/TSubTaskScanDirectory.h =================================================================== diff -u -N -r835e0344e9677ff02eb3b539061c48c9f3a616ce -rbebda797ec6983535a8940f8f9f15453fe6b1785 --- src/libchcore/TSubTaskScanDirectory.h (.../TSubTaskScanDirectory.h) (revision 835e0344e9677ff02eb3b539061c48c9f3a616ce) +++ src/libchcore/TSubTaskScanDirectory.h (.../TSubTaskScanDirectory.h) (revision bebda797ec6983535a8940f8f9f15453fe6b1785) @@ -30,7 +30,35 @@ BEGIN_CHCORE_NAMESPACE class TFileFiltersArray; +class TReadBinarySerializer; +class TWriteBinarySerializer; +namespace details +{ + /////////////////////////////////////////////////////////////////////////// + // TScanDirectoriesProgressInfo + + class TScanDirectoriesProgressInfo : public TSubTaskProgressInfo + { + public: + TScanDirectoriesProgressInfo(); + virtual ~TScanDirectoriesProgressInfo(); + + 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; + }; +} + /////////////////////////////////////////////////////////////////////////// // TSubTaskScanDirectories @@ -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::TScanDirectoriesProgressInfo m_tProgressInfo; +#pragma warning(pop) }; END_CHCORE_NAMESPACE