OpenSDN source code
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  build_info_str = BuildInfo;
34  return true;
35 }
36 
39  TaskPolicy exclude_all;
40  const char *config_exclude_list[] = {
41  "dns::Config",
42  "dns::BindStatus",
43  "db::DBTable",
44  "db::IFMapTable",
45  "io::ReaderTask",
46  "timer::TimerTask",
47  "bgp::Config",
48  "xmpp::StateMachine",
49  "ifmap::StateMachine",
50  "sandesh::RecvQueue",
51  "http::RequestHandlerTask",
52  "dns::NamedSndRcv"
53  };
54  int arraysize = sizeof(config_exclude_list) / sizeof(char *);
55  for (int i = 0; i < arraysize; ++i) {
56  int task_id = scheduler->GetTaskId(config_exclude_list[i]);
57  exclude_all.push_back(TaskExclusion(task_id));
58  }
59  scheduler->SetPolicy(scheduler->GetTaskId("dns::Config"), exclude_all);
60  scheduler->SetPolicy(scheduler->GetTaskId("bgp::Config"), exclude_all);
61 
62  const char *bindstatus_exclude_list[] = {
63  "io::ReaderTask",
64  "bgp::Config",
65  "xmpp::StateMachine",
66  "sandesh::RecvQueue",
67  "http::RequestHandlerTask",
68  };
69  arraysize = sizeof(bindstatus_exclude_list) / sizeof(char *);
70  TaskPolicy bindstatus_exclude;
71  for (int i = 0; i < arraysize; ++i) {
72  int task_id = scheduler->GetTaskId(bindstatus_exclude_list[i]);
73  bindstatus_exclude.push_back(TaskExclusion(task_id));
74  }
75  scheduler->SetPolicy(scheduler->GetTaskId("dns::BindStatus"), bindstatus_exclude);
76 
77  TaskPolicy exclude_io = boost::assign::list_of
78  (TaskExclusion(scheduler->GetTaskId("io::ReaderTask")))
79  (TaskExclusion(scheduler->GetTaskId("sandesh::RecvQueue")))
80  (TaskExclusion(scheduler->GetTaskId("http::RequestHandlerTask")));
81  scheduler->SetPolicy(scheduler->GetTaskId("xmpp::StateMachine"),
82  exclude_io);
83 }
static const uint16_t DnsServerPort()
static uint32_t xmpp_srv_port_
Definition: dns.h:84
static uint32_t dns_port_
Definition: dns.h:90
static std::string prog_name_
Definition: dns.h:86
static std::string host_name_
Definition: dns.h:85
static std::string self_ip_
Definition: dns.h:87
static std::string collector_
Definition: dns.h:88
static void SetTaskSchedulingPolicy()
Definition: dns.cc:37
static XmppServer * xmpp_server_
Definition: dns.h:83
static uint32_t http_port_
Definition: dns.h:89
static DnsConfigManager * dns_config_mgr_
Definition: dns.h:81
static DnsAgentXmppChannelManager * agent_xmpp_channel_mgr_
Definition: dns.h:91
static DnsManager * dns_mgr_
Definition: dns.h:80
static bool GetVersion(std::string &build_info_str)
Definition: dns.cc:32
static EventManager * event_mgr_
Definition: dns.h:79
The TaskScheduler keeps track of what tasks are currently schedulable. When a task is enqueued it is ...
Definition: task.h:178
int GetTaskId(const std::string &name)
Definition: task.cc:856
void SetPolicy(int task_id, TaskPolicy &policy)
Sets the task exclusion policy. Adds policy entries for the task Examples:
Definition: task.cc:610
static TaskScheduler * GetInstance()
Definition: task.cc:547
std::vector< TaskExclusion > TaskPolicy
Definition: task.h:59
const std::string BuildInfo