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