bt_zmq_publisher.h
Go to the documentation of this file.
1 #ifndef BT_ZMQ_PUBLISHER_H
2 #define BT_ZMQ_PUBLISHER_H
3 
4 #include <array>
5 #include <future>
6 #include "abstract_logger.h"
7 
8 namespace BT
9 {
11 {
12  static std::atomic<bool> ref_count;
13 
14 public:
15  PublisherZMQ(const BT::Tree& tree, unsigned max_msg_per_second = 25,
16  unsigned publisher_port = 1666, unsigned server_port = 1667);
17 
18  virtual ~PublisherZMQ();
19 
20 private:
21  virtual void callback(Duration timestamp, const TreeNode& node, NodeStatus prev_status,
22  NodeStatus status) override;
23 
24  virtual void flush() override;
25 
26  const BT::Tree& tree_;
27  std::vector<uint8_t> tree_buffer_;
28  std::vector<uint8_t> status_buffer_;
29  std::vector<SerializedTransition> transition_buffer_;
30  std::chrono::microseconds min_time_between_msgs_;
31 
32  std::atomic_bool active_server_;
33  std::thread thread_;
34 
35  void createStatusBuffer();
36 
39  std::atomic_bool send_pending_;
40  std::condition_variable send_condition_variable_;
41  std::future<void> send_future_;
42 
43  struct Pimpl;
44  Pimpl* zmq_;
45 };
46 } // namespace BT
47 
48 #endif // BT_ZMQ_PUBLISHER_H
BT
Definition: ex01_wrap_legacy.cpp:29
BT::PublisherZMQ::active_server_
std::atomic_bool active_server_
Definition: bt_zmq_publisher.h:32
BT::PublisherZMQ::~PublisherZMQ
virtual ~PublisherZMQ()
Definition: bt_zmq_publisher.cpp:86
minitrace::mutex
static pthread_mutex_t mutex
Definition: minitrace.cpp:61
BT::PublisherZMQ::deadline_
TimePoint deadline_
Definition: bt_zmq_publisher.h:37
BT::PublisherZMQ::flush
virtual void flush() override
Definition: bt_zmq_publisher.cpp:142
BT::PublisherZMQ
Definition: bt_zmq_publisher.h:10
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
BT::PublisherZMQ::thread_
std::thread thread_
Definition: bt_zmq_publisher.h:33
BT::PublisherZMQ::zmq_
Pimpl * zmq_
Definition: bt_zmq_publisher.h:43
BT::StatusChangeLogger
Definition: abstract_logger.h:17
BT::PublisherZMQ::Pimpl
Definition: bt_zmq_publisher.cpp:10
BT::PublisherZMQ::min_time_between_msgs_
std::chrono::microseconds min_time_between_msgs_
Definition: bt_zmq_publisher.h:30
BT::PublisherZMQ::PublisherZMQ
PublisherZMQ(const BT::Tree &tree, unsigned max_msg_per_second=25, unsigned publisher_port=1666, unsigned server_port=1667)
Definition: bt_zmq_publisher.cpp:20
BT::PublisherZMQ::transition_buffer_
std::vector< SerializedTransition > transition_buffer_
Definition: bt_zmq_publisher.h:29
BT::PublisherZMQ::send_pending_
std::atomic_bool send_pending_
Definition: bt_zmq_publisher.h:39
BT::PublisherZMQ::send_condition_variable_
std::condition_variable send_condition_variable_
Definition: bt_zmq_publisher.h:40
BT::PublisherZMQ::createStatusBuffer
void createStatusBuffer()
Definition: bt_zmq_publisher.cpp:104
BT::Duration
std::chrono::high_resolution_clock::duration Duration
Definition: basic_types.h:371
BT::PublisherZMQ::tree_
const BT::Tree & tree_
Definition: bt_zmq_publisher.h:26
BT::PublisherZMQ::ref_count
static std::atomic< bool > ref_count
Definition: bt_zmq_publisher.h:12
BT::PublisherZMQ::send_future_
std::future< void > send_future_
Definition: bt_zmq_publisher.h:41
BT::PublisherZMQ::status_buffer_
std::vector< uint8_t > status_buffer_
Definition: bt_zmq_publisher.h:28
BT::TimePoint
std::chrono::high_resolution_clock::time_point TimePoint
Definition: basic_types.h:370
BT::PublisherZMQ::mutex_
std::mutex mutex_
Definition: bt_zmq_publisher.h:38
BT::NodeStatus
NodeStatus
Definition: basic_types.h:35
BT::PublisherZMQ::tree_buffer_
std::vector< uint8_t > tree_buffer_
Definition: bt_zmq_publisher.h:27
BT::PublisherZMQ::callback
virtual void callback(Duration timestamp, const TreeNode &node, NodeStatus prev_status, NodeStatus status) override
Definition: bt_zmq_publisher.cpp:117
abstract_logger.h


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