OpenSDN source code
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
task_map.cc
Go to the documentation of this file.
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 TaskMap::TaskMap(Agent *agent, const std::string &name, int instance,
17  boost::asio::io_context &io) :
18  agent_(agent), name_(name), instance_(instance),
19  io_(io) {
20 
21  task_ = NULL;
22 }
23 
25 }
26 
27 task *task_create(void *task_map)
28 {
29  task *new_task;
30  new_task = (task *)malloc(sizeof(task));
31  if (!new_task) {
32  return NULL;
33  }
34  new_task->agent_task = task_map;
35  return new_task;
36 }
37 
38 TaskMap *TaskMapManager::CreateTaskMap(Agent *agent, const std::string &name,
39  int instance, boost::asio::io_context &io) {
40 
41  TaskMap *task_map = new TaskMap(agent, name, instance, io);
42  if (!task_map) {
43  return NULL;
44  }
45 
46  task_map->task_ = task_create(task_map);
47  if (!task_map->task_) {
48  delete task_map;
49  return NULL;
50  }
51 
52  task_timer_init(task_map->task_);
53 
54  return task_map;
55 }
56 
58  if (!task_map) {
59  return false;
60  }
61 
62  free(task_map->task_);
63 
64  delete task_map;
65 
66  return true;
67 }
68 
static bool DeleteTaskMap(TaskMap *task_map)
Definition: task_map.cc:57
void task_timer_init(task *tp)
Definition: task_int.h:10
~TaskMap()
Definition: task_map.cc:24
task * task_
Definition: task_map.h:22
TaskMap(Agent *agent, const std::string &name, int instance, boost::asio::io_context &io)
Definition: task_map.cc:16
Definition: agent.h:358
friend class TaskMap
Definition: task_map.h:31
void * agent_task
Definition: task_int.h:11
task * task_create(void *task_map)
Definition: task_map.cc:27
static TaskMap * CreateTaskMap(Agent *agent, const std::string &name, int instance, boost::asio::io_context &io)
Definition: task_map.cc:38