Index: src/libchcore/TSubTaskArray.h =================================================================== diff -u -N -r835e0344e9677ff02eb3b539061c48c9f3a616ce -rbebda797ec6983535a8940f8f9f15453fe6b1785 --- src/libchcore/TSubTaskArray.h (.../TSubTaskArray.h) (revision 835e0344e9677ff02eb3b539061c48c9f3a616ce) +++ src/libchcore/TSubTaskArray.h (.../TSubTaskArray.h) (revision bebda797ec6983535a8940f8f9f15453fe6b1785) @@ -32,24 +32,71 @@ class TOperationPlan; class TSubTaskContext; +class TReadBinarySerializer; +class TWriteBinarySerializer; + +namespace details +{ + /////////////////////////////////////////////////////////////////////////// + // TTaskBasicProgressInfo + + class LIBCHCORE_API TTaskBasicProgressInfo + { + public: + TTaskBasicProgressInfo(); + ~TTaskBasicProgressInfo(); + + void ResetProgress(); + + void SetSubOperationIndex(size_t stSubOperationIndex); + size_t GetSubOperationIndex() const; + void IncreaseSubOperationIndex(); + + void Serialize(TReadBinarySerializer& rSerializer); + void Serialize(TWriteBinarySerializer& rSerializer) const; + + private: + TTaskBasicProgressInfo(const TTaskBasicProgressInfo& rSrc); + + private: + volatile size_t m_stSubOperationIndex; // index of sub-operation from TOperationDescription + +#pragma warning(push) +#pragma warning(disable: 4251) + mutable boost::shared_mutex m_lock; +#pragma warning(pop) + }; +} + +/////////////////////////////////////////////////////////////////////////// +// TTaskBasicProgressInfo class LIBCHCORE_API TSubTasksArray { public: + TSubTasksArray(); TSubTasksArray(const TOperationPlan& rOperationPlan, TSubTaskContext& rSubTaskContext); ~TSubTasksArray(); + void Init(const TOperationPlan& rOperationPlan, TSubTaskContext& rSubTaskContext); + void ResetProgress(); + + void SerializeProgress(TReadBinarySerializer& rSerializer); + void SerializeProgress(TWriteBinarySerializer& rSerializer) const; + TSubTaskBase::ESubOperationResult Execute(bool bRunOnlyEstimationSubTasks); private: TSubTasksArray(const TSubTasksArray& rSrc); TSubTasksArray& operator=(const TSubTasksArray& rSrc); private: + TSubTaskContext* m_pSubTaskContext; + #pragma warning(push) #pragma warning(disable: 4251) std::vector > m_vSubTasks; // pointer to the subtask object / part of the whole process / is this the part of estimation? + details::TTaskBasicProgressInfo m_tProgressInfo; #pragma warning(pop) - TSubTaskContext& m_rSubTaskContext; }; END_CHCORE_NAMESPACE