25 #ifndef INCLUDED_Tracing_h_GUID_0D1E8891_2D51_4281_9CBC_2B9B4DFB28C1 26 #define INCLUDED_Tracing_h_GUID_0D1E8891_2D51_4281_9CBC_2B9B4DFB28C1 29 #include <osvr/Common/Export.h> 30 #include <osvr/Common/TracingConfig.h> 42 typedef std::int64_t TraceBeginStamp;
43 #ifdef OSVR_COMMON_TRACING_ENABLED 44 struct OSVR_COMMON_EXPORT MainTracePolicy {
45 static TraceBeginStamp begin(
const char *text);
46 static void end(
const char *text, TraceBeginStamp stamp);
47 static void mark(
const char *text);
50 struct OSVR_COMMON_EXPORT WorkerTracePolicy {
51 static TraceBeginStamp begin(
const char *text);
52 static void end(
const char *text, TraceBeginStamp stamp);
53 static void mark(
const char *text);
56 template <
typename TracePolicy>
class TracingRegion {
59 ~TracingRegion() { TracePolicy::end(m_text, m_stamp); }
64 explicit TracingRegion(
const char text[]) : m_text(text) {
65 m_stamp = TracePolicy::begin(m_text);
68 TracingRegion(TracingRegion
const &) =
delete;
70 TracingRegion &operator=(TracingRegion
const &) =
delete;
73 TraceBeginStamp m_stamp;
76 template <
typename Policy>
77 inline void markConcatenation(
const char *fixedString,
78 std::string
const &
string) {
79 Policy::mark((fixedString +
string).c_str());
81 #else // OSVR_COMMON_TRACING_ENABLED ^^ // vv !OSVR_COMMON_TRACING_ENABLED 83 static TraceBeginStamp begin(
const char *) {
return 0; }
84 static void end(
const char *, TraceBeginStamp) {}
85 static void mark(
const char *) {}
88 static TraceBeginStamp begin(
const char *) {
return 0; }
89 static void end(
const char *, TraceBeginStamp) {}
90 static void mark(
const char *) {}
97 inline TraceBeginStamp driverUpdateStart(std::string
const &,
98 std::string
const &) {
101 inline void driverUpdateEnd(TraceBeginStamp) {}
102 template <
typename Policy>
103 inline void markConcatenation(
const char *, std::string
const &) {}
104 #endif // !OSVR_COMMON_TRACING_ENABLED 114 inline void markPathTreeBroadcast() {
115 MainTracePolicy::mark(
"Path Tree Broadcast");
117 inline void markHardwareDetect() {
118 MainTracePolicy::mark(
"Hardware Detection");
126 inline void markTimestampOutOfOrder() {
127 MainTracePolicy::mark(
"Timestamp out of order");
129 inline void markNewTrackerData() {
130 MainTracePolicy::mark(
"New tracker data");
132 inline void markGetState(std::string
const &path) {
133 markConcatenation<WorkerTracePolicy>(
"GetState ", path);
135 inline void markGetInterface(std::string
const &path) {
136 markConcatenation<WorkerTracePolicy>(
"GetInterface ", path);
138 inline void markReleaseInterface(std::string
const &path) {
139 markConcatenation<WorkerTracePolicy>(
"ReleaseInterface ", path);
146 #endif // INCLUDED_Tracing_h_GUID_0D1E8891_2D51_4281_9CBC_2B9B4DFB28C1 Handles spatial transformations.
Definition: SerializationTraitExample_Complicated.h:40
"Guard"-type class to trace the region of a server update
Definition: Tracing.h:122
The main namespace for all C++ elements of the framework, internal and external.
Definition: namespace_osvr.dox:3
"Guard"-type class to trace the region of a server update
Definition: Tracing.h:109