bt_minitrace_logger.cpp
Go to the documentation of this file.
1 
3 #include "minitrace/minitrace.h"
4 
5 namespace BT
6 {
7 std::atomic<bool> MinitraceLogger::ref_count(false);
8 
9 MinitraceLogger::MinitraceLogger(const Tree& tree, const char* filename_json) :
10  StatusChangeLogger(tree.rootNode())
11 {
12  bool expected = false;
13  if (!ref_count.compare_exchange_strong(expected, true))
14  {
15  throw LogicError("Only one instance of StdCoutLogger shall be created");
16  }
17 
19  minitrace::mtr_init(filename_json);
20  this->enableTransitionToIdle(true);
21 }
22 
24 {
27  ref_count = false;
28 }
29 
30 const char* toConstStr(NodeType type)
31 {
32  switch (type)
33  {
34  case NodeType::ACTION:
35  return "Action";
37  return "Condition";
39  return "Decorator";
40  case NodeType::CONTROL:
41  return "Control";
42  case NodeType::SUBTREE:
43  return "SubTree";
44  default:
45  return "Undefined";
46  }
47 }
48 
49 void MinitraceLogger::callback(Duration /*timestamp*/, const TreeNode& node,
50  NodeStatus prev_status, NodeStatus status)
51 {
52  using namespace minitrace;
53 
54  const bool statusCompleted =
55  (status == NodeStatus::SUCCESS || status == NodeStatus::FAILURE);
56 
57  const char* category = toConstStr(node.type());
58  const char* name = node.name().c_str();
59 
60  if (prev_status == NodeStatus::IDLE && statusCompleted)
61  {
62  MTR_INSTANT(category, name);
63  }
64  else if (status == NodeStatus::RUNNING)
65  {
66  MTR_BEGIN(category, name);
67  }
68  else if (prev_status == NodeStatus::RUNNING && statusCompleted)
69  {
70  MTR_END(category, name);
71  }
72 }
73 
75 {
77 }
78 } // namespace BT
BT
Definition: ex01_wrap_legacy.cpp:29
BT::NodeType
NodeType
Enumerates the possible types of nodes.
Definition: basic_types.h:22
BT::NodeType::DECORATOR
@ DECORATOR
BT::NodeType::CONDITION
@ CONDITION
MTR_BEGIN
#define MTR_BEGIN(c, n)
Definition: minitrace.h:96
BT::StatusChangeLogger::enableTransitionToIdle
void enableTransitionToIdle(bool enable)
Definition: abstract_logger.h:49
BT::TreeNode
Abstract base class for Behavior Tree Nodes.
Definition: tree_node.h:55
BT::Tree
Struct used to store a tree. If this object goes out of scope, the tree is destroyed.
Definition: bt_factory.h:125
minitrace::mtr_shutdown
void mtr_shutdown()
Definition: minitrace.cpp:173
BT::NodeType::SUBTREE
@ SUBTREE
minitrace.h
BT::MinitraceLogger::MinitraceLogger
MinitraceLogger(const BT::Tree &tree, const char *filename_json)
Definition: bt_minitrace_logger.cpp:9
BT::MinitraceLogger::flush
virtual void flush() override
Definition: bt_minitrace_logger.cpp:74
BT::LogicError
Definition: exceptions.h:45
BT::StatusChangeLogger
Definition: abstract_logger.h:17
minitrace::mtr_init
void mtr_init(const char *json_file)
Definition: minitrace.cpp:158
minitrace
Definition: minitrace.cpp:33
minitrace::mtr_flush
void mtr_flush()
Definition: minitrace.cpp:224
BT::NodeStatus::FAILURE
@ FAILURE
MTR_END
#define MTR_END(c, n)
Definition: minitrace.h:97
BT::NodeType::ACTION
@ ACTION
BT::MinitraceLogger::ref_count
static std::atomic< bool > ref_count
Definition: bt_minitrace_logger.h:11
BT::Duration
std::chrono::high_resolution_clock::duration Duration
Definition: basic_types.h:371
MTR_INSTANT
#define MTR_INSTANT(c, n)
Definition: minitrace.h:131
BT::TreeNode::type
virtual NodeType type() const =0
BT::TreeNode::name
const std::string & name() const
Name of the instance, not the type.
Definition: tree_node.cpp:101
BT::NodeStatus::SUCCESS
@ SUCCESS
BT::NodeStatus::RUNNING
@ RUNNING
BT::MinitraceLogger::~MinitraceLogger
virtual ~MinitraceLogger() override
Definition: bt_minitrace_logger.cpp:23
BT::NodeType::CONTROL
@ CONTROL
BT::NodeStatus::IDLE
@ IDLE
BT::MinitraceLogger::callback
virtual void callback(Duration timestamp, const TreeNode &node, NodeStatus prev_status, NodeStatus status) override
Definition: bt_minitrace_logger.cpp:49
minitrace::mtr_register_sigint_handler
void mtr_register_sigint_handler()
Definition: minitrace.cpp:147
BT::toConstStr
const char * toConstStr(NodeType type)
Definition: bt_minitrace_logger.cpp:30
BT::NodeStatus
NodeStatus
Definition: basic_types.h:35
bt_minitrace_logger.h


behaviortree_cpp_v3
Author(s): Michele Colledanchise, Davide Faconti
autogenerated on Wed Jun 26 2024 02:51:19