Index: src/libchcore/TTask.cpp
===================================================================
diff -u -ra5f396da5ed5ffb3fcd9fdf22afb5a7fd07e1ab8 -rb1ecc12ba4c1f2a7b4acd6e82fc4193535e55ff0
--- src/libchcore/TTask.cpp	(.../TTask.cpp)	(revision a5f396da5ed5ffb3fcd9fdf22afb5a7fd07e1ab8)
+++ src/libchcore/TTask.cpp	(.../TTask.cpp)	(revision b1ecc12ba4c1f2a7b4acd6e82fc4193535e55ff0)
@@ -40,19 +40,17 @@
 ////////////////////////////////////////////////////////////////////////////
 // TTask members
 
-TTask::TTask(IFeedbackHandler* piFeedbackHandler, size_t stSessionUniqueID) :
+TTask::TTask(const ITaskSerializerPtr& spSerializer, IFeedbackHandler* piFeedbackHandler) :
 	m_log(),
 	m_piFeedbackHandler(piFeedbackHandler),
 	m_arrSourcePathsInfo(m_tTaskDefinition.GetSourcePaths()),
 	m_files(m_tTaskDefinition.GetSourcePaths()),
 	m_bForce(false),
 	m_bContinue(false),
-	m_bRareStateModified(false),
-	m_bOftenStateModified(false),
-	m_stSessionUniqueID(stSessionUniqueID),
 	m_eCurrentState(eTaskState_None),
 	m_tSubTaskContext(m_tTaskDefinition, m_arrSourcePathsInfo, m_files, m_cfgTracker, m_log, piFeedbackHandler, m_workerThread, m_fsLocal),
-	m_tSubTasksArray()
+	m_tSubTasksArray(),
+	m_spSerializer(spSerializer)
 {
 	BOOST_ASSERT(piFeedbackHandler);
 }
@@ -122,8 +120,9 @@
 	SetTaskPropValue<eTO_ThreadPriority>(m_tTaskDefinition.GetConfiguration(), nPriority);
 }
 
-void TTask::Load(const TSmartPath& strPath)
+void TTask::Load()
 {
+/*
 	using Serializers::Serialize;
 
 	boost::unique_lock<boost::shared_mutex> lock(m_lock);
@@ -175,11 +174,12 @@
 //	m_localStats.SetTimeElapsed(timeElapsed);
 
 	m_arrSourcePathsInfo.Serialize(readSerializer, false);
-	m_files.Serialize(readSerializer, true);
+	m_files.Serialize(readSerializer, true);*/
 }
 
 void TTask::Store()
 {
+/*
 	using Serializers::Serialize;
 
 	boost::upgrade_lock<boost::shared_mutex> lock(m_lock);
@@ -192,7 +192,7 @@
 	if(m_strFilePath.IsEmpty())
 	{
 		boost::upgrade_to_unique_lock<boost::shared_mutex> upgraded_lock(lock);
-		m_strFilePath = m_strTaskDirectory + PathFromWString(m_tTaskDefinition.GetTaskUniqueID() + _T(".cht"));
+		m_strFilePath = m_strTaskDirectory + PathFromWString(m_tTaskDefinition.GetTaskName() + _T(".cht"));
 	}
 
 	// store task definition only if changed
@@ -229,7 +229,7 @@
 		m_arrSourcePathsInfo.Serialize(writeSerializer, false);
 
 		m_files.Serialize(writeSerializer, true);
-	}
+	}*/
 }
 
 void TTask::KillThread()
@@ -241,9 +241,6 @@
 {
 	boost::unique_lock<boost::shared_mutex> lock(m_lock);
 
-	m_bRareStateModified = true;
-	m_bOftenStateModified = true;
-
 	m_workerThread.StartThread(DelegateThreadProc, this, GetTaskPropValue<eTO_ThreadPriority>(m_tTaskDefinition.GetConfiguration()));
 }
 
@@ -285,8 +282,6 @@
 	{
 		KillThread();
 		SetTaskState(eTaskState_Paused);
-
-		m_bOftenStateModified = true;
 	}
 }
 
@@ -297,7 +292,6 @@
 	{
 		KillThread();
 		SetTaskState(eTaskState_Cancelled);
-		m_bOftenStateModified = true;
 	}
 }
 
@@ -313,8 +307,7 @@
 
 	m_tLocalStats.GetSnapshot(spSnapshot);
 
-	spSnapshot->SetTaskID(m_tTaskDefinition.GetTaskUniqueID());
-	spSnapshot->SetSessionUniqueID(GetSessionUniqueID());
+	spSnapshot->SetTaskName(m_tTaskDefinition.GetTaskName());
 	spSnapshot->SetThreadPriority(GetTaskPropValue<eTO_ThreadPriority>(m_tTaskDefinition.GetConfiguration()));
 	spSnapshot->SetDestinationPath(m_tTaskDefinition.GetDestinationPath().ToString());
 	spSnapshot->SetFilters(m_afFilters);
@@ -351,26 +344,6 @@
 	}
 }
 
-void TTask::DeleteProgress()
-{
-	TPathContainer vFilesToRemove;
-
-	// separate scope for shared locking
-	{
-		boost::shared_lock<boost::shared_mutex> lock(m_lock);
-
-		vFilesToRemove.Add(GetRelatedPath(ePathType_TaskDefinition));
-		vFilesToRemove.Add(GetRelatedPath(ePathType_TaskRarelyChangingState));
-		vFilesToRemove.Add(GetRelatedPath(ePathType_TaskOftenChangingState));
-		vFilesToRemove.Add(GetRelatedPath(ePathType_TaskLogFile));
-	}
-
-	for(size_t stIndex = 0; stIndex < vFilesToRemove.GetCount(); ++stIndex)
-	{
-		DeleteFile(vFilesToRemove.GetAt(stIndex).ToString());
-	}
-}
-
 bool TTask::CanBegin()
 {
 	bool bRet=true;
@@ -387,18 +360,6 @@
 	return bRet;
 }
 
-void TTask::SetTaskDirectory(const TSmartPath& strDir)
-{
-	boost::unique_lock<boost::shared_mutex> lock(m_lock);
-	m_strTaskDirectory = strDir;
-}
-
-TSmartPath TTask::GetTaskDirectory() const
-{
-	boost::shared_lock<boost::shared_mutex> lock(m_lock);
-	return m_strTaskDirectory;
-}
-
 void TTask::SetForceFlag(bool bFlag)
 {
 	boost::unique_lock<boost::shared_mutex> lock(m_lock);
@@ -495,10 +456,8 @@
 		TSubTaskBase::ESubOperationResult eResult = TSubTaskBase::eSubResult_Continue;
 
 		// initialize log file
-		TSmartPath pathLogFile = GetRelatedPath(ePathType_TaskLogFile);
+		m_log.init(m_pathLog.ToString(), 262144, icpf::log_file::level_debug, false, false);
 
-		m_log.init(pathLogFile.ToString(), 262144, icpf::log_file::level_debug, false, false);
-
 		// start operation
 		OnBeginOperation();
 
@@ -570,7 +529,6 @@
 			m_files.Clear();		// get rid of m_files contents; rare state not modified, since incomplete cache is not being stored
 
 		// save progress before killed
-		m_bOftenStateModified = true;
 		Store();
 
 		// reset flags
@@ -643,43 +601,6 @@
 	m_workerThread.SignalThreadToStop();
 }
 
-TSmartPath TTask::GetRelatedPath(EPathType ePathType)
-{
-	boost::shared_lock<boost::shared_mutex> lock(m_lock);
-
-	return GetRelatedPathNL(ePathType);
-}
-
-TSmartPath TTask::GetRelatedPathNL(EPathType ePathType)
-{
-	BOOST_ASSERT(!m_strTaskDirectory.IsEmpty() || !m_strFilePath.IsEmpty());
-	if(m_strTaskDirectory.IsEmpty() && m_strFilePath.IsEmpty())
-		THROW_CORE_EXCEPTION(eErr_MissingTaskSerializationPath);
-
-	// in all cases we would like to have task definition path defined
-	TSmartPath strFilePath = m_strFilePath;
-	if(strFilePath.IsEmpty())
-		strFilePath = m_strTaskDirectory + PathFromWString(m_tTaskDefinition.GetTaskUniqueID() + _T(".cht"));
-
-	switch(ePathType)
-	{
-	case ePathType_TaskDefinition:
-		return strFilePath;
-
-	case ePathType_TaskRarelyChangingState:
-		return strFilePath.AppendCopy(PathFromString(_T(".rstate")), false);
-
-	case ePathType_TaskOftenChangingState:
-		return strFilePath.AppendCopy(PathFromString(_T(".ostate")), false);
-
-	case ePathType_TaskLogFile:
-		return strFilePath.AppendCopy(PathFromString(_T(".log")), false);
-
-	default:
-		THROW_CORE_EXCEPTION(eErr_UnhandledCase);
-	}
-}
-
 void TTask::OnCfgOptionChanged(const TStringSet& rsetChanges, void* pParam)
 {
 	TTask* pTask = (TTask*)pParam;
@@ -697,4 +618,19 @@
 	return m_tLocalStats.IsRunning();
 }
 
+TSmartPath TTask::GetSerializerPath() const
+{
+	return m_spSerializer->GetPath();
+}
+
+chcore::TSmartPath TTask::GetLogPath() const
+{
+	return m_pathLog;
+}
+
+void TTask::SetLogPath(const TSmartPath& pathLog)
+{
+	m_pathLog = pathLog;
+}
+
 END_CHCORE_NAMESPACE