23#include "sync_listener.h"
25#include <blackboard/blackboard.h>
26#include <logging/logger.h>
59 reader_bb_ = reader_bb;
60 writer_bb_ = writer_bb;
82 if (interface == writer_) {
84 logger_->log_debug(bbil_name(),
85 "Forwarding message from sender %s, source %s",
86 message->sender_id().get_string().c_str(),
87 message->source_id().get_string().c_str());
91 reader_->msgq_enqueue(m,
true);
92 message->set_id(m->
id());
93 logger_->log_debug(bbil_name(),
94 "Sender after enqueueing: %s",
96 logger_->log_debug(bbil_name(),
97 "Source after enqueueing: %s",
103 logger_->log_error(bbil_name(),
"Message received for unknown interface");
107 logger_->log_error(bbil_name(),
"Exception when message received");
108 logger_->log_error(
"SyncInterfaceListener", e);
117 if (interface == reader_) {
120 writer_->copy_values(reader_);
124 logger_->log_error(bbil_name(),
"Data changed for unknown interface");
127 logger_->log_error(bbil_name(),
"Exception when data changed");
128 logger_->log_error(bbil_name(), e);
virtual ~SyncInterfaceListener()
Destructor.
virtual bool bb_interface_message_received(fawkes::Interface *interface, fawkes::Message *message) noexcept
BlackBoard message received notification.
virtual void bb_interface_data_refreshed(fawkes::Interface *interface) noexcept
BlackBoard data refreshed notification.
SyncInterfaceListener(fawkes::Logger *logger, fawkes::Interface *reader, fawkes::Interface *writer, fawkes::BlackBoard *reader_bb, fawkes::BlackBoard *writer_bb)
Constructor.
BlackBoard interface listener.
void bbil_add_message_interface(Interface *interface)
Add an interface to the message received watch list.
void bbil_add_data_interface(Interface *interface)
Add an interface to the data modification watch list.
The BlackBoard abstract class.
virtual void unregister_listener(BlackBoardInterfaceListener *listener)
Unregister BB interface listener.
virtual void register_listener(BlackBoardInterfaceListener *listener, ListenerRegisterFlag flag=BBIL_FLAG_ALL)
Register BB event listener.
Base class for exceptions in Fawkes.
Base class for all Fawkes BlackBoard interfaces.
Base class for all messages passed through interfaces in Fawkes BlackBoard.
Uuid source_id() const
Get ID of the original source of the message.
Uuid sender_id() const
Get ID of the immediate sender, not necessarily the creator of the message.
void set_hops(unsigned int hops)
Set number of hops.
virtual Message * clone() const
Clone this message.
unsigned int id() const
Get message ID.
void unref()
Decrement reference count and conditionally delete this instance.
void ref()
Increment reference count.
std::string get_string() const
Get the string representation of the Uuid.
Fawkes library namespace.