Index: src/libchcore/TTaskManager.cpp =================================================================== diff -u -N -rb1ecc12ba4c1f2a7b4acd6e82fc4193535e55ff0 -r1342b18babc7e88850e74f46cb473a737a68f28a --- src/libchcore/TTaskManager.cpp (.../TTaskManager.cpp) (revision b1ecc12ba4c1f2a7b4acd6e82fc4193535e55ff0) +++ src/libchcore/TTaskManager.cpp (.../TTaskManager.cpp) (revision 1342b18babc7e88850e74f46cb473a737a68f28a) @@ -20,54 +20,37 @@ #include "TTaskManager.h" #include "TTask.h" -#include -#include "../libicpf/exception.h" -#include "TLogger.h" -#include #include "TTaskStatsSnapshot.h" #include "TTaskManagerStatsSnapshot.h" #include "TCoreException.h" #include "ErrorCodes.h" #include "TTaskInfo.h" -#include -#include -#include -#include BEGIN_CHCORE_NAMESPACE //////////////////////////////////////////////////////////////////////////////// // TTaskManager members -TTaskManager::TTaskManager(const ITaskManagerSerializerPtr& spSerializer) : - m_piFeedbackFactory(NULL), +TTaskManager::TTaskManager(const ITaskManagerSerializerPtr& spSerializer, IFeedbackHandlerFactory* piFeedbackHandlerFactory) : m_stNextTaskID(NoTaskID + 1), - m_spSerializer(spSerializer) + m_spSerializer(spSerializer), + m_piFeedbackFactory(piFeedbackHandlerFactory) { + if(!piFeedbackHandlerFactory) + THROW_CORE_EXCEPTION(eErr_InvalidPointer); } TTaskManager::~TTaskManager() { // NOTE: do not delete the feedback factory, since we are not responsible for releasing it } -void TTaskManager::Create(IFeedbackHandlerFactory* piFeedbackHandlerFactory) -{ - BOOST_ASSERT(piFeedbackHandlerFactory); - - m_piFeedbackFactory = piFeedbackHandlerFactory; -} - TTaskPtr TTaskManager::CreateTask(const TTaskDefinition& tTaskDefinition) { - TString strUuid = GetUuid(); - TSmartPath pathTaskSerializer = CreateTaskSerializePath(strUuid); - TSmartPath pathTaskLog = CreateTaskLogPath(strUuid); - IFeedbackHandler* piHandler = CreateNewFeedbackHandler(); - ITaskSerializerPtr spSerializer = m_spSerializer->CreateTaskSerializer(pathTaskSerializer); + ITaskSerializerPtr spSerializer = m_spSerializer->CreateNewTaskSerializer(tTaskDefinition.GetTaskName()); TTaskPtr spTask(new TTask(spSerializer, piHandler)); - spTask->SetLogPath(pathTaskLog); + spTask->SetLogPath(CreateTaskLogPath(tTaskDefinition.GetTaskName())); spTask->SetTaskDefinition(tTaskDefinition); Add(spTask); @@ -128,7 +111,7 @@ iOrder = rEntry.GetOrder() + 1; } - m_tTasks.Add(m_stNextTaskID++, spNewTask->GetSerializerPath(), iOrder, spNewTask); + m_tTasks.Add(m_stNextTaskID++, spNewTask->GetSerializer()->GetLocation(), iOrder, spNewTask); spNewTask->OnRegisterTask(); } @@ -151,7 +134,7 @@ void TTaskManager::RemoveAllFinished() { - std::vector vTasksToRemove; + std::vector vTasksSerializersToRemove; // separate scope for locking { @@ -170,16 +153,16 @@ spTask->OnUnregisterTask(); - vTasksToRemove.push_back(rEntry.GetTaskPath()); + vTasksSerializersToRemove.push_back(spTask->GetSerializer()); m_tTasks.RemoveAt(stIndex); } } } - BOOST_FOREACH(TSmartPath& spTaskPath, vTasksToRemove) + BOOST_FOREACH(ITaskSerializerPtr& spSerializer, vTasksSerializersToRemove) { // delete associated files - DeleteFile(spTaskPath.ToString()); + m_spSerializer->RemoveTaskSerializer(spSerializer); } } @@ -204,7 +187,7 @@ spTask->OnUnregisterTask(); - vTasksToRemove.push_back(rEntry.GetTaskPath()); + vTasksToRemove.push_back(rEntry.GetTaskSerializeLocation()); m_tTasks.RemoveAt(stIndex); break; } @@ -453,7 +436,6 @@ spTask->Store(); } - } void TTaskManager::Load() @@ -477,7 +459,7 @@ if(!rEntry.GetTask()) { IFeedbackHandler* piHandler = CreateNewFeedbackHandler(); - ITaskSerializerPtr spSerializer = m_spSerializer->CreateTaskSerializer(rEntry.GetTaskPath()); + ITaskSerializerPtr spSerializer = m_spSerializer->CreateExistingTaskSerializer(rEntry.GetTaskSerializeLocation()); TTaskPtr spTask(new TTask(spSerializer, piHandler)); spTask->Load(); @@ -486,24 +468,10 @@ } } } - -TString TTaskManager::GetUuid() +TSmartPath TTaskManager::CreateTaskLogPath(const TString& strTaskUuid) const { - boost::uuids::random_generator gen; - boost::uuids::uuid u = gen(); - return boost::lexical_cast(u).c_str(); -} - -TSmartPath TTaskManager::CreateTaskLogPath(const TString& strUuid) const -{ - TSmartPath pathLog = m_pathLogDir + PathFromString(TString(_T("Task-")) + strUuid + _T(".log")); + TSmartPath pathLog = m_pathLogDir + PathFromString(TString(_T("Task-")) + strTaskUuid + _T(".log")); return pathLog; } -chcore::TSmartPath TTaskManager::CreateTaskSerializePath(const TString& strUuid) const -{ - TSmartPath pathLog = m_pathLogDir + PathFromString(TString(_T("Task-")) + strUuid + _T(".sqlite")); - return pathLog; -} - END_CHCORE_NAMESPACE