When trying to create a task with an already existing name, it returns an error.
Change-Id: Ie67105b2e0e82ea20f570b4ad73ce5c2253d166d
Signed-off-by: Changgyu Choi <changyu.choi@samsung.com>
std::shared_ptr<Context> ContextManager::Create(std::string name,
bool use_thread) {
- auto context = std::make_shared<Context>(name, use_thread);
+ auto context = Find(name);
+ if (context != nullptr) {
+ _W("Already exist context : %s", name.c_str());
+ return nullptr;
+ }
+
+ context = std::make_shared<Context>(name, use_thread);
std::lock_guard<std::recursive_mutex> lock(mutex_);
contexts_[std::move(name)] = context;
return context;
throw std::invalid_argument("main task must not use a thread");
context_ = ContextManager::GetInst().Create(name_, use_thread_);
+ if (context_ == nullptr)
+ throw std::invalid_argument("failed to create context");
+
loop_ = g_main_loop_new(context_->GetHandle(), FALSE);
}
}
std::shared_ptr<Task> Task::Create(std::string name, bool use_thread) {
- auto task = std::make_shared<Task>(std::move(name), use_thread);
- task->GetContext()->SetLoop(task);
- return task;
+ try {
+ auto task = std::make_shared<Task>(std::move(name), use_thread);
+ task->GetContext()->SetLoop(task);
+ return task;
+ } catch (const std::bad_alloc& e) {
+ return nullptr;
+ }
}
void Task::Dispose() {
TEST_F(TizenCoreTest, tizen_core_task_create_P) {
tizen_core_task_h task = nullptr;
- int ret = tizen_core_task_create("test_task", true, &task);
+ int ret = tizen_core_task_create("new_task", true, &task);
ASSERT_EQ(ret, TIZEN_CORE_ERROR_NONE);
ASSERT_NE(task, nullptr);
tizen_core_task_destroy(task);
tizen_core_task_h task = nullptr;
ret = tizen_core_task_create("main", true, &task);
ASSERT_EQ(ret, TIZEN_CORE_ERROR_INVALID_PARAMETER);
+
+ ret = tizen_core_task_create("test_task", true, &task);
+ ASSERT_EQ(ret, TIZEN_CORE_ERROR_INVALID_PARAMETER);
}
TEST_F(TizenCoreTest, tizen_core_task_destroy_P) {