OpenSDN source code
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
control_node.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2013 Juniper Networks, Inc. All rights reserved.
3  */
4 
5 #ifndef ctrlplane__ctrl_node_h
6 
7 #define ctrlplane__ctrl_node_h
8 
9 #include <malloc.h>
10 #include <string>
11 #include "base/sandesh/process_info_types.h"
12 #include "io/event_manager.h"
13 #include "sandesh/sandesh_trace.h"
14 
15 class BgpServer;
17 class IFMapServer;
18 class TaskTrigger;
19 
20 #define CONTROL_NODE_EXIT(message) \
21  do { \
22  LOG(ERROR, "Control-Node Terminated: " message); \
23  ControlNode::Exit(false); \
24  } while (false)
25 
26 class ControlNode {
27 public:
28  static void SetDefaultSchedulingPolicy();
29  static void SetHostname(const std::string name) { hostname_ = name; }
30  static const std::string GetHostname() { return hostname_; }
31  static const std::string &GetProgramName() { return prog_name_; }
32  static void SetProgramName(const char *name) { prog_name_ = name; }
33  static std::string GetSelfIp() { return self_ip_; }
34  static void SetSelfIp(std::string ip) { self_ip_ = ip; }
35  static void SetTestMode(const bool flag) { test_mode_ = flag; }
36  static bool GetTestMode() { return test_mode_; }
37  static void StartControlNodeInfoLogger(
38  EventManager &evm, uint64_t period_msecs, const BgpServer *server,
39  const BgpXmppChannelManager *xmpp_channel_mgr,
40  const IFMapServer *ifmap_server, const string &build_info);
41  static void Shutdown();
42  static void Exit(bool do_assert);
43  static std::string GetProcessState(bool bgpHasSelfConfiguration,
44  bool bgpIsAdminDown, bool configEndOfRibComputed,
45  process::ProcessState::type *state, std::string *message);
46 
47 private:
48  static bool ControlNodeInfoLogger(const BgpServer *server,
49  const BgpXmppChannelManager *xmpp_channel_mgr,
50  const IFMapServer *ifmap_server, const std::string &build_info);
52 
53  static std::string hostname_;
54  static std::string prog_name_;
55  static std::string self_ip_;
56  static bool test_mode_;
57 
58 };
59 
60 void ControlNodeShutdown();
61 
62 #endif // ctrlplane__ctrl_node_h
static void SetHostname(const std::string name)
Definition: control_node.h:29
static std::string GetSelfIp()
Definition: control_node.h:33
static bool GetTestMode()
Definition: control_node.h:36
static const std::string GetHostname()
Definition: control_node.h:30
static std::string prog_name_
Definition: control_node.h:54
static void SetSelfIp(std::string ip)
Definition: control_node.h:34
static const std::string & GetProgramName()
Definition: control_node.h:31
static void Exit(bool do_assert)
static void SetProgramName(const char *name)
Definition: control_node.h:32
static std::string self_ip_
Definition: control_node.h:55
uint8_t type
Definition: load_balance.h:109
static std::string GetProcessState(bool bgpHasSelfConfiguration, bool bgpIsAdminDown, bool configEndOfRibComputed, process::ProcessState::type *state, std::string *message)
static std::unique_ptr< TaskTrigger > node_info_trigger
static bool ControlNodeInfoLogTimer(TaskTrigger *node_info_trigger)
static void Shutdown()
static bool test_mode_
Definition: control_node.h:56
static void SetTestMode(const bool flag)
Definition: control_node.h:35
static void SetDefaultSchedulingPolicy()
Definition: control_node.cc:19
static bool ControlNodeInfoLogger(const BgpServer *server, const BgpXmppChannelManager *xmpp_channel_mgr, const IFMapServer *ifmap_server, const std::string &build_info)
static void StartControlNodeInfoLogger(EventManager &evm, uint64_t period_msecs, const BgpServer *server, const BgpXmppChannelManager *xmpp_channel_mgr, const IFMapServer *ifmap_server, const string &build_info)
static std::string hostname_
Definition: control_node.h:53
static EventManager evm