OpenSDN source code
dns.cc
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2013 Juniper Networks, Inc. All rights reserved.
3  * Copyright Contributors to the OpenSDN project
4  */
5 
6 #include <boost/assign.hpp>
7 #include <base/logging.h>
8 #include <base/task.h>
9 #include <io/event_manager.h>
10 #include <cmn/dns.h>
11 #include <cmn/buildinfo.h>
12 
13 #include <sandesh/sandesh_types.h>
14 #include <sandesh/sandesh.h>
15 #include <sandesh/request_pipeline.h>
16 
17 #include "config_client_manager.h"
18 
19 using namespace std;
24 uint32_t Dns::xmpp_srv_port_;
26 std::string Dns::host_name_;
27 std::string Dns::prog_name_;
28 std::string Dns::collector_;
29 std::string Dns::self_ip_;
30 uint32_t Dns::http_port_;
32 
33 bool Dns::GetVersion(string &build_info_str) {
34  build_info_str = BuildInfo;
35  return true;
36 }
37 
40  TaskPolicy exclude_all;
41  const char *config_exclude_list[] = {
42  "dns::Config",
43  "dns::BindStatus",
44  "db::DBTable",
45  "db::IFMapTable",
46  "io::ReaderTask",
47  "timer::TimerTask",
48  "bgp::Config",
49  "xmpp::StateMachine",
50  "ifmap::StateMachine",
51  "sandesh::RecvQueue",
52  "http::RequestHandlerTask",
53  "dns::NamedSndRcv"
54  };
55  int arraysize = sizeof(config_exclude_list) / sizeof(char *);
56  for (int i = 0; i < arraysize; ++i) {
57  int task_id = scheduler->GetTaskId(config_exclude_list[i]);
58  exclude_all.push_back(TaskExclusion(task_id));
59  }
60  scheduler->SetPolicy(scheduler->GetTaskId("dns::Config"), exclude_all);
61  scheduler->SetPolicy(scheduler->GetTaskId("bgp::Config"), exclude_all);
62 
63  const char *bindstatus_exclude_list[] = {
64  "io::ReaderTask",
65  "bgp::Config",
66  "xmpp::StateMachine",
67  "sandesh::RecvQueue",
68  "http::RequestHandlerTask",
69  };
70  arraysize = sizeof(bindstatus_exclude_list) / sizeof(char *);
71  TaskPolicy bindstatus_exclude;
72  for (int i = 0; i < arraysize; ++i) {
73  int task_id = scheduler->GetTaskId(bindstatus_exclude_list[i]);
74  bindstatus_exclude.push_back(TaskExclusion(task_id));
75  }
76  scheduler->SetPolicy(scheduler->GetTaskId("dns::BindStatus"), bindstatus_exclude);
77 
78  TaskPolicy exclude_io = boost::assign::list_of
79  (TaskExclusion(scheduler->GetTaskId("io::ReaderTask")))
80  (TaskExclusion(scheduler->GetTaskId("sandesh::RecvQueue")))
81  (TaskExclusion(scheduler->GetTaskId("http::RequestHandlerTask")));
82  scheduler->SetPolicy(scheduler->GetTaskId("xmpp::StateMachine"),
83  exclude_io);
84 }
static const uint16_t DnsServerPort()
static uint32_t xmpp_srv_port_
Definition: dns.h:87
static uint32_t dns_port_
Definition: dns.h:93
static std::string prog_name_
Definition: dns.h:89
static std::string host_name_
Definition: dns.h:88
static std::string self_ip_
Definition: dns.h:90
static std::string collector_
Definition: dns.h:91
static void SetTaskSchedulingPolicy()
Definition: dns.cc:38
static XmppServer * xmpp_server_
Definition: dns.h:86
static uint32_t http_port_
Definition: dns.h:92
static DnsConfigManager * dns_config_mgr_
Definition: dns.h:84
static DnsAgentXmppChannelManager * agent_xmpp_channel_mgr_
Definition: dns.h:94
static DnsManager * dns_mgr_
Definition: dns.h:83
static bool GetVersion(std::string &build_info_str)
Definition: dns.cc:33
static EventManager * event_mgr_
Definition: dns.h:82
The TaskScheduler keeps track of what tasks are currently schedulable. When a task is enqueued it is ...
Definition: task.h:307
int GetTaskId(const std::string &name)
Definition: task.cc:884
void SetPolicy(int task_id, TaskPolicy &policy)
Sets the task exclusion policy. Adds policy entries for the task Examples:
Definition: task.cc:637
static TaskScheduler * GetInstance()
Definition: task.cc:574
The class is used to specify a Task label for formulating a task exclusion list (an execution policy)...
Definition: task.h:249
std::vector< TaskExclusion > TaskPolicy
Defines a type to store an execution policy (a list of task exclusions).
Definition: task.h:273
const std::string BuildInfo