Index: src/libchcore/TSubTaskCopyMove.h =================================================================== diff -u -ra5f396da5ed5ffb3fcd9fdf22afb5a7fd07e1ab8 -r081055369d6b332ef1651877756657973b1b2d9c --- src/libchcore/TSubTaskCopyMove.h (.../TSubTaskCopyMove.h) (revision a5f396da5ed5ffb3fcd9fdf22afb5a7fd07e1ab8) +++ src/libchcore/TSubTaskCopyMove.h (.../TSubTaskCopyMove.h) (revision 081055369d6b332ef1651877756657973b1b2d9c) @@ -50,9 +50,6 @@ TCopyMoveProgressInfo(); virtual ~TCopyMoveProgressInfo(); - virtual void Serialize(TReadBinarySerializer& rSerializer); - virtual void Serialize(TWriteBinarySerializer& rSerializer) const; - virtual void ResetProgress(); // file being processed @@ -64,10 +61,30 @@ void SetCurrentFileProcessedSize(unsigned long long ullSize); unsigned long long GetCurrentFileProcessedSize() const; void IncreaseCurrentFileProcessedSize(unsigned long long ullSizeToAdd); + void DecreaseCurrentFileProcessedSize(unsigned long long ullSizeToSubtract); + void Store(const ISerializerRowDataPtr& spRowData) const; + static void InitLoader(IColumnsDefinition& rColumns); + void Load(const ISerializerRowReaderPtr& spRowReader); + bool WasSerialized() const; + private: - volatile size_t m_stCurrentIndex; - volatile unsigned long long m_ullCurrentFileProcessedSize; // count of bytes processed for current file + enum EModifications + { + eMod_Added, + eMod_CurrentIndex, + eMod_CurrentFileProcessedSize, + + // last item + eMod_Last + }; + + typedef std::bitset Bitset; + mutable Bitset m_setModifications; + + TSharedModificationTracker m_stCurrentIndex; + TSharedModificationTracker m_ullCurrentFileProcessedSize; // count of bytes processed for current file + mutable boost::shared_mutex m_lock; }; } @@ -82,6 +99,9 @@ virtual ESubOperationResult Exec(); virtual ESubOperationType GetSubOperationType() const { return eSubOperation_Copying; } + virtual void Store(const ISerializerPtr& spSerializer) const; + virtual void Load(const ISerializerPtr& spSerializer); + virtual TSubTaskProgressInfo& GetProgressInfo() { return m_tProgressInfo; } virtual void GetStatsSnapshot(TSubTaskStatsSnapshotPtr& rStats) const;