Index: src/libchcore/TSubTaskCopyMove.h =================================================================== diff -u -N -r0b8ae6ab8b538881b651126bf8e6de9c9912a782 -r19925be73ffcadd9f345f10e03e55aadb3f0eeac --- src/libchcore/TSubTaskCopyMove.h (.../TSubTaskCopyMove.h) (revision 0b8ae6ab8b538881b651126bf8e6de9c9912a782) +++ src/libchcore/TSubTaskCopyMove.h (.../TSubTaskCopyMove.h) (revision 19925be73ffcadd9f345f10e03e55aadb3f0eeac) @@ -62,9 +62,28 @@ unsigned long long GetCurrentFileProcessedSize() const; void IncreaseCurrentFileProcessedSize(unsigned long long ullSizeToAdd); + void Store(const ISerializerRowDataPtr& spRowData) const; + static void InitLoader(const IColumnsDefinitionPtr& spColumns); + 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; }; }