Line data Source code
1 : /* 2 : * Copyright (c) 2017 Juniper Networks, Inc. All rights reserved. 3 : * Copyright Contributors to the OpenSDN project 4 : */ 5 : 6 : #include "task_map.h" 7 : 8 : #ifdef __cplusplus 9 : extern "C" { 10 : #endif 11 : #include "task_int.h" 12 : #include "task_timer_api.h" 13 : #ifdef __cplusplus 14 : } 15 : #endif 16 : 17 2 : TaskMap::TaskMap(Agent *agent, const std::string &name, int instance, 18 2 : boost::asio::io_context &io) : 19 2 : agent_(agent), name_(name), instance_(instance), 20 2 : io_(io) { 21 : 22 2 : task_ = NULL; 23 2 : } 24 : 25 2 : TaskMap::~TaskMap() { 26 2 : } 27 : 28 2 : task *task_create(void *task_map) 29 : { 30 : task *new_task; 31 2 : new_task = (task *)malloc(sizeof(task)); 32 2 : if (!new_task) { 33 0 : return NULL; 34 : } 35 2 : new_task->agent_task = task_map; 36 2 : return new_task; 37 : } 38 : 39 2 : TaskMap *TaskMapManager::CreateTaskMap(Agent *agent, const std::string &name, 40 : int instance, boost::asio::io_context &io) { 41 : 42 2 : TaskMap *task_map = new TaskMap(agent, name, instance, io); 43 2 : if (!task_map) { 44 0 : return NULL; 45 : } 46 : 47 2 : task_map->task_ = task_create(task_map); 48 2 : if (!task_map->task_) { 49 0 : delete task_map; 50 0 : return NULL; 51 : } 52 : 53 2 : task_timer_init(task_map->task_); 54 : 55 2 : return task_map; 56 : } 57 : 58 2 : bool TaskMapManager::DeleteTaskMap(TaskMap *task_map) { 59 2 : if (!task_map) { 60 0 : return false; 61 : } 62 : 63 2 : free(task_map->task_); 64 : 65 2 : delete task_map; 66 : 67 2 : return true; 68 : } 69 :