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