Class
List
Hierarchy
Modules
Common
Events
Math
Messages
Physics
Rendering
Sensors
Transport
Links
Gazebo Website
Wiki
Tutorials
Download
Report Documentation Issues
•
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
gazebo
util
Diagnostics.hh
Go to the documentation of this file.
1
/*
2
* Copyright (C) 2012-2014 Open Source Robotics Foundation
3
*
4
* Licensed under the Apache License, Version 2.0 (the "License");
5
* you may not use this file except in compliance with the License.
6
* You may obtain a copy of the License at
7
*
8
* http://www.apache.org/licenses/LICENSE-2.0
9
*
10
* Unless required by applicable law or agreed to in writing, software
11
* distributed under the License is distributed on an "AS IS" BASIS,
12
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
* See the License for the specific language governing permissions and
14
* limitations under the License.
15
*
16
*/
17
/* Desc: A diagnostic class
18
* Author: Nate Koenig
19
* Date: 2 Feb 2011
20
*/
21
22
#ifndef _DIAGNOSTICMANAGER_HH_
23
#define _DIAGNOSTICMANAGER_HH_
24
25
#include <boost/unordered_map.hpp>
26
#include <string>
27
#include <boost/filesystem.hpp>
28
29
#include "gazebo/gazebo_config.h"
30
31
#include "
gazebo/transport/TransportTypes.hh
"
32
33
#include "
gazebo/msgs/msgs.hh
"
34
35
#include "
gazebo/common/UpdateInfo.hh
"
36
#include "
gazebo/common/SingletonT.hh
"
37
#include "
gazebo/common/Timer.hh
"
38
39
#include "
gazebo/util/UtilTypes.hh
"
40
#include "
gazebo/util/system.hh
"
41
42
namespace
gazebo
43
{
44
namespace
util
45
{
48
49
#ifdef ENABLE_DIAGNOSTICS
50
#define DIAG_TIMER_START(_name) \
54
gazebo::util::DiagnosticManager::Instance()->StartTimer(_name);
55
61
#define DIAG_TIMER_LAP(_name, _prefix) \
62
gazebo::util::DiagnosticManager::Instance()->Lap(_name, _prefix);
63
66
#define DIAG_TIMER_STOP(_name) \
67
gazebo::util::DiagnosticManager::Instance()->StopTimer(_name);
68
#else
69
#define DIAG_TIMER_START(_name) ((void) 0)
70
#define DIAG_TIMER_LAP(_name, _prefix) ((void)0)
71
#define DIAG_TIMER_STOP(_name) ((void) 0)
72
#endif
73
76
class
GAZEBO_VISIBLE
DiagnosticManager
:
77
public
SingletonT
<DiagnosticManager>
78
{
80
private
:
DiagnosticManager
();
81
83
private
:
virtual
~
DiagnosticManager
();
84
87
public
:
void
Init
(
const
std::string &_worldName);
88
92
public
:
void
StartTimer(
const
std::string &_name);
93
96
public
:
void
StopTimer(
const
std::string &_name);
97
103
public
:
void
Lap(
const
std::string &_name,
const
std::string &_prefix);
104
107
public
:
int
GetTimerCount()
const
;
108
112
public
:
common::Time
GetTime(
int
_index)
const
;
113
117
public
:
common::Time
GetTime(
const
std::string &_label)
const
;
118
122
public
: std::string GetLabel(
int
_index)
const
;
123
126
public
: boost::filesystem::path GetLogPath()
const
;
127
130
private
:
void
Update(
const
common::UpdateInfo
&_info);
131
137
private
:
void
AddTime(
const
std::string &_name,
common::Time
&_wallTime,
138
common::Time
&_elapsedtime);
139
141
private
:
typedef
boost::unordered_map<std::string, DiagnosticTimerPtr>
142
TimerMap;
143
145
private
: TimerMap timers;
146
148
private
: boost::filesystem::path logPath;
149
151
private
:
transport::NodePtr
node;
152
154
private
:
transport::PublisherPtr
pub;
155
157
private
: msgs::Diagnostics msg;
158
160
private
:
event::ConnectionPtr
updateConnection;
161
162
// Singleton implementation
163
private
:
friend
class
SingletonT
<
DiagnosticManager
>;
164
166
private
:
friend
class
DiagnosticTimer
;
167
};
168
171
class
GAZEBO_VISIBLE
DiagnosticTimer
:
public
common::Timer
172
{
175
public
:
DiagnosticTimer
(
const
std::string &_name);
176
178
public
:
virtual
~
DiagnosticTimer
();
179
182
public
:
void
Lap(
const
std::string &_prefix);
183
184
// Documentation inherited
185
public
:
virtual
void
Start();
186
187
// Documentation inherited
188
public
:
virtual
void
Stop();
189
192
public
:
inline
const
std::string
GetName
()
const
193
{
return
this->name; }
194
196
private
: std::string name;
197
199
private
: std::ofstream log;
200
202
private
:
common::Time
prevLap;
203
};
205
}
206
}
207
#endif