Index: src/libchcore/TTaskManager.cpp =================================================================== diff -u -N -ra99c8baeb8f6c237603df46c0f5c4cf943152c09 -rcdb4c898156398dd4f4bf8abd7c854eff42f6ae2 --- src/libchcore/TTaskManager.cpp (.../TTaskManager.cpp) (revision a99c8baeb8f6c237603df46c0f5c4cf943152c09) +++ src/libchcore/TTaskManager.cpp (.../TTaskManager.cpp) (revision cdb4c898156398dd4f4bf8abd7c854eff42f6ae2) @@ -27,6 +27,7 @@ #include "TTaskInfo.h" #include #include "SerializerTrace.h" +#include "TFakeFileSerializer.h" BEGIN_CHCORE_NAMESPACE @@ -42,7 +43,7 @@ { if(!spFeedbackHandlerFactory || !spSerializerFactory) THROW_CORE_EXCEPTION(eErr_InvalidPointer); - m_spSerializer = m_spSerializerFactory->CreateSerializer(ISerializerFactory::eObj_TaskManager, _T(""), bForceRecreateSerializer); + m_spSerializer = m_spSerializerFactory->CreateTaskManagerSerializer(bForceRecreateSerializer); } TTaskManager::~TTaskManager() @@ -53,7 +54,7 @@ TTaskPtr TTaskManager::CreateTask(const TTaskDefinition& tTaskDefinition) { IFeedbackHandlerPtr spHandler = m_spFeedbackFactory->Create(); - ISerializerPtr spSerializer = m_spSerializerFactory->CreateSerializer(ISerializerFactory::eObj_Task, tTaskDefinition.GetTaskName()); + ISerializerPtr spSerializer = m_spSerializerFactory->CreateTaskSerializer(tTaskDefinition.GetTaskName()); TTaskPtr spTask(new TTask(spSerializer, spHandler)); spTask->SetLogPath(CreateTaskLogPath(tTaskDefinition.GetTaskName())); @@ -494,12 +495,23 @@ } } - typedef std::pair PairInfo; - BOOST_FOREACH(const PairInfo& rInfo, vObjects) + for(const auto& rInfo : vObjects) { IFeedbackHandlerPtr spHandler = m_spFeedbackFactory->Create(); - ISerializerPtr spSerializer(m_spSerializerFactory->CreateSerializer(ISerializerFactory::eObj_Task, rInfo.second.ToWString())); + ISerializerPtr spSerializer; + try + { + spSerializer = m_spSerializerFactory->CreateTaskSerializer(rInfo.second.ToWString()); + } + catch (const std::exception&) + { + // ignore the exception + } + + if (!spSerializer) + spSerializer = boost::make_shared(rInfo.second); + TTaskPtr spTask(new TTask(spSerializer, spHandler)); spTask->Load();