monitor.h
Go to the documentation of this file.
1 // Monitors execution of a launch file
2 // Author: Max Schwarz <max.schwarz@uni-bonn.de>
3 
4 #ifndef ROSMON_MONITOR_MONITOR_H
5 #define ROSMON_MONITOR_MONITOR_H
6 
7 #include "../fd_watcher.h"
8 #include "../launch/launch_config.h"
9 #include "../log_event.h"
10 
11 #include "node_monitor.h"
12 #include "linux_process_info.h"
13 
14 #include <boost/signals2.hpp>
15 
16 #include <ros/node_handle.h>
17 
18 namespace rosmon
19 {
20 
21 namespace monitor
22 {
23 
24 class Monitor
25 {
26 public:
27 public:
29 
30  void setParameters();
31  void start();
32  void shutdown();
33  void forceExit();
34  bool allShutdown();
35 
36  double shutdownTimeout();
37 
38  inline bool ok() const
39  { return m_ok; }
40 
41  const std::vector<NodeMonitor::Ptr>& nodes() const
42  { return m_nodes; }
43  std::vector<NodeMonitor::Ptr>& nodes()
44  { return m_nodes; }
45 
47  { return m_config; }
48 
49  boost::signals2::signal<void(LogEvent)> logMessageSignal;
50 private:
51  struct ProcessInfo
52  {
54  bool active;
55  };
56 
57  template<typename... Args>
58  void log(const char* fmt, Args&& ... args);
59 
60  template<typename... Args>
61  void logTyped(LogEvent::Type type, const char* fmt, Args&& ... args);
62 
63  void handleRequiredNodeExit(const std::string& name);
64 
65 #if HAVE_STEADYTIMER
66  void updateStats(const ros::SteadyTimerEvent& event);
67 #else
68  void updateStats(const ros::WallTimerEvent& event);
69 #endif
70 
72 
75 
76  std::vector<NodeMonitor::Ptr> m_nodes;
77 
78  bool m_ok;
79 
80 #if HAVE_STEADYTIMER
82 #else
84 #endif
85 
86  std::map<int, ProcessInfo> m_processInfos;
87 };
88 
89 }
90 
91 }
92 
93 #endif
rosmon::monitor::Monitor::m_nh
ros::NodeHandle m_nh
Definition: monitor.h:73
node_handle.h
rosmon::monitor::Monitor::m_ok
bool m_ok
Definition: monitor.h:78
rosmon
Definition: diagnostics_publisher.cpp:34
rosmon::LogEvent
Definition: log_event.h:13
boost::shared_ptr< FDWatcher >
rosmon::monitor::Monitor::shutdown
void shutdown()
Definition: monitor.cpp:108
rosmon::monitor::Monitor::ProcessInfo
Definition: monitor.h:51
rosmon::LogEvent::Type
Type
Definition: log_event.h:16
ros::WallTimer
rosmon::monitor::Monitor::m_fdWatcher
FDWatcher::Ptr m_fdWatcher
Definition: monitor.h:74
rosmon::monitor::Monitor::config
launch::LaunchConfig::ConstPtr config() const
Definition: monitor.h:46
rosmon::monitor::Monitor::ProcessInfo::active
bool active
Definition: monitor.h:54
rosmon::monitor::Monitor::m_statTimer
ros::WallTimer m_statTimer
Definition: monitor.h:83
rosmon::monitor::Monitor::updateStats
void updateStats(const ros::WallTimerEvent &event)
Definition: monitor.cpp:178
rosmon::monitor::Monitor
Definition: monitor.h:24
rosmon::monitor::Monitor::nodes
const std::vector< NodeMonitor::Ptr > & nodes() const
Definition: monitor.h:41
rosmon::monitor::Monitor::handleRequiredNodeExit
void handleRequiredNodeExit(const std::string &name)
Definition: monitor.cpp:150
rosmon::monitor::Monitor::shutdownTimeout
double shutdownTimeout()
Definition: monitor.cpp:139
node_monitor.h
rosmon::launch::LaunchConfig::ConstPtr
std::shared_ptr< const LaunchConfig > ConstPtr
Definition: launch_config.h:179
ros::SteadyTimer
linux_process_info.h
rosmon::monitor::Monitor::m_config
launch::LaunchConfig::ConstPtr m_config
Definition: monitor.h:71
rosmon::monitor::Monitor::setParameters
void setParameters()
Definition: monitor.cpp:66
ros::SteadyTimerEvent
rosmon::monitor::Monitor::ProcessInfo::stat
process_info::ProcessStat stat
Definition: monitor.h:53
rosmon::monitor::Monitor::start
void start()
Definition: monitor.cpp:100
ros::WallTimerEvent
rosmon::monitor::Monitor::m_processInfos
std::map< int, ProcessInfo > m_processInfos
Definition: monitor.h:86
rosmon::monitor::Monitor::logMessageSignal
boost::signals2::signal< void(LogEvent)> logMessageSignal
Definition: monitor.h:49
rosmon::monitor::Monitor::logTyped
void logTyped(LogEvent::Type type, const char *fmt, Args &&... args)
Definition: monitor.cpp:166
rosmon::monitor::Monitor::forceExit
void forceExit()
Definition: monitor.cpp:114
rosmon::monitor::Monitor::m_nodes
std::vector< NodeMonitor::Ptr > m_nodes
Definition: monitor.h:76
rosmon::monitor::Monitor::log
void log(const char *fmt, Args &&... args)
Definition: monitor.cpp:157
rosmon::monitor::Monitor::ok
bool ok() const
Definition: monitor.h:38
rosmon::monitor::process_info::ProcessStat
Definition: linux_process_info.h:32
rosmon::monitor::Monitor::nodes
std::vector< NodeMonitor::Ptr > & nodes()
Definition: monitor.h:43
rosmon::monitor::Monitor::allShutdown
bool allShutdown()
Definition: monitor.cpp:127
rosmon::monitor::Monitor::Monitor
Monitor(launch::LaunchConfig::ConstPtr config, FDWatcher::Ptr watcher)
Definition: monitor.cpp:35
ros::NodeHandle


rosmon_core
Author(s): Max Schwarz
autogenerated on Wed Feb 21 2024 04:01:14