Fawkes API
Fawkes Development Version
|
Interface proxy for remote BlackBoard. More...
#include <>>
Public Member Functions | |
BlackBoardInterfaceProxy (FawkesNetworkClient *client, FawkesNetworkMessage *msg, BlackBoardNotifier *notifier, Interface *interface, bool readwrite) | |
Constructor. More... | |
~BlackBoardInterfaceProxy () | |
Destructor. More... | |
void | process_data_refreshed (FawkesNetworkMessage *msg) |
Process MSG_BB_DATA_CHANGED/REFRESHED message. More... | |
void | process_interface_message (FawkesNetworkMessage *msg) |
Process MSG_BB_INTERFACE message. More... | |
void | reader_added (Uuid event_serial) |
Reader has been added. More... | |
void | reader_removed (Uuid event_serial) |
Reader has been removed. More... | |
void | writer_added (Uuid event_serial) |
Writer has been added. More... | |
void | writer_removed (Uuid event_serial) |
Writer has been removed. More... | |
Uuid | serial () const |
Get instance serial of interface. More... | |
Uuid | clid () const |
Get client ID of assigned client. More... | |
Interface * | interface () const |
Get instance serial of interface. More... | |
virtual bool | exists_writer (const Interface *interface) const |
Check if a writer exists for the given interface. More... | |
virtual unsigned int | num_readers (const Interface *interface) const |
Get number of readers. More... | |
virtual void | notify_of_data_refresh (const Interface *interface, bool has_changed) |
Notify of data change. More... | |
virtual std::list< std::string > | readers (const Interface *interface) const |
Get owners of interfaces who opened for reading. More... | |
virtual std::string | writer (const Interface *interface) const |
Get writer of interface. More... | |
virtual void | transmit (Message *message) |
Transmit message. More... | |
![]() | |
virtual | ~InterfaceMediator () |
Virtual destructor. More... | |
![]() | |
virtual | ~MessageMediator () |
Virtual destructor. More... | |
Interface proxy for remote BlackBoard.
This proxy is used internally by RemoteBlackBoard to interact with an interface on the one side and the remote BlackBoard on the other side.
Definition at line 41 of file interface_proxy.h.
fawkes::BlackBoardInterfaceProxy::BlackBoardInterfaceProxy | ( | FawkesNetworkClient * | client, |
FawkesNetworkMessage * | msg, | ||
BlackBoardNotifier * | notifier, | ||
Interface * | interface, | ||
bool | writer | ||
) |
Constructor.
client | Fawkes network client |
msg | must be a MSG_BB_OPEN_SUCCESS message describing the interface in question |
notifier | BlackBoard notifier to use to notify of interface events |
interface | interface instance of the correct type, will be initialized in this ctor and can be used afterwards. |
writer | true to make this a writing instance, false otherwise |
Definition at line 55 of file interface_proxy.cpp.
References fawkes::FawkesNetworkMessage::clid(), fawkes::bb_iopensucc_msg_t::data_size, fawkes::Interface::datasize(), fawkes::interface_header_t::flag_writer_active, fawkes::Interface::hash(), fawkes::interface_header_t::hash, fawkes::Interface::id(), fawkes::interface_header_t::id, interface(), fawkes::FawkesNetworkMessage::msgid(), fawkes::interface_header_t::num_readers, fawkes::FawkesNetworkMessage::payload(), fawkes::interface_header_t::refcount, fawkes::bb_iopensucc_msg_t::serial, fawkes::Interface::type(), fawkes::interface_header_t::type, writer(), and fawkes::bb_iopensucc_msg_t::writer_readers.
fawkes::BlackBoardInterfaceProxy::~BlackBoardInterfaceProxy | ( | ) |
Destructor.
Definition at line 105 of file interface_proxy.cpp.
Uuid fawkes::BlackBoardInterfaceProxy::clid | ( | ) | const |
Get client ID of assigned client.
Definition at line 279 of file interface_proxy.cpp.
|
virtual |
Check if a writer exists for the given interface.
interface | interface to check |
Implements fawkes::InterfaceMediator.
Definition at line 295 of file interface_proxy.cpp.
Interface * fawkes::BlackBoardInterfaceProxy::interface | ( | ) | const |
Get instance serial of interface.
Definition at line 288 of file interface_proxy.cpp.
Referenced by BlackBoardInterfaceProxy(), and notify_of_data_refresh().
|
virtual |
Notify of data change.
Notify all subscribers of the given interface of a data change. This also influences logging and sending data over the network so it is mandatory to call this function! The interface base class write method does that for you.
interface | interface whose subscribers to notify |
has_changed | whether the current data is different from the last time write() was called on the interface |
Implements fawkes::InterfaceMediator.
Definition at line 319 of file interface_proxy.cpp.
References fawkes::bb_idata_msg_t::data_size, fawkes::Interface::datachunk(), fawkes::Interface::datasize(), fawkes::FawkesNetworkClient::enqueue(), interface(), fawkes::bb_idata_msg_t::serial, and fawkes::Interface::serial().
|
virtual |
Get number of readers.
Get the number of readers that the given interface has.
interface | interface to check |
Implements fawkes::InterfaceMediator.
Definition at line 301 of file interface_proxy.cpp.
void fawkes::BlackBoardInterfaceProxy::process_data_refreshed | ( | FawkesNetworkMessage * | msg | ) |
Process MSG_BB_DATA_CHANGED/REFRESHED message.
msg | message to process. |
Definition at line 114 of file interface_proxy.cpp.
References fawkes::bb_idata_msg_t::data_size, fawkes::Uuid::get_string(), fawkes::LibLogger::log_error(), fawkes::FawkesNetworkMessage::msgid(), fawkes::BlackBoardNotifier::notify_of_data_refresh(), fawkes::FawkesNetworkMessage::payload(), and fawkes::bb_idata_msg_t::serial.
void fawkes::BlackBoardInterfaceProxy::process_interface_message | ( | FawkesNetworkMessage * | msg | ) |
Process MSG_BB_INTERFACE message.
msg | message to process. |
Definition at line 153 of file interface_proxy.cpp.
References fawkes::Exception::append(), fawkes::Interface::create_message(), fawkes::bb_imessage_msg_t::data_size, fawkes::Message::datasize(), fawkes::Uuid::get_string(), fawkes::bb_imessage_msg_t::hops, fawkes::Message::hops(), fawkes::Interface::is_writer(), fawkes::LibLogger::log_debug(), fawkes::LibLogger::log_error(), fawkes::LibLogger::log_warn(), fawkes::bb_imessage_msg_t::msg_type, fawkes::bb_imessage_msg_t::msgid, fawkes::FawkesNetworkMessage::msgid(), fawkes::Interface::msgq_append(), fawkes::BlackBoardNotifier::notify_of_message_received(), fawkes::FawkesNetworkMessage::payload(), fawkes::bb_imessage_msg_t::serial, fawkes::Message::set_from_chunk(), fawkes::Message::set_hops(), fawkes::Message::set_id(), fawkes::Message::set_sender_id(), fawkes::Message::set_source_id(), fawkes::bb_imessage_msg_t::source, fawkes::Message::type(), fawkes::Interface::uid(), and fawkes::RefCount::unref().
void fawkes::BlackBoardInterfaceProxy::reader_added | ( | Uuid | event_serial | ) |
Reader has been added.
event_serial | instance serial of the interface that caused the event |
Definition at line 228 of file interface_proxy.cpp.
References fawkes::BlackBoardNotifier::notify_of_reader_added().
void fawkes::BlackBoardInterfaceProxy::reader_removed | ( | Uuid | event_serial | ) |
Reader has been removed.
event_serial | instance serial of the interface that caused the event |
Definition at line 238 of file interface_proxy.cpp.
References fawkes::BlackBoardNotifier::notify_of_reader_removed().
|
virtual |
Get owners of interfaces who opened for reading.
interface | an interface to query for the UID |
Implements fawkes::InterfaceMediator.
Definition at line 307 of file interface_proxy.cpp.
Uuid fawkes::BlackBoardInterfaceProxy::serial | ( | ) | const |
Get instance serial of interface.
Definition at line 270 of file interface_proxy.cpp.
|
virtual |
Transmit message.
The mediator may modify the message ID of the message.
message | message to transmit. |
BlackBoardNoWritingInstanceException | thrown if there is no writing instance for the transmitting interface |
Implements fawkes::MessageMediator.
Definition at line 340 of file interface_proxy.cpp.
References fawkes::bb_imessage_msg_t::data_size, fawkes::Message::datachunk(), fawkes::Message::datasize(), fawkes::FawkesNetworkClient::enqueue(), fawkes::bb_imessage_msg_t::hops, fawkes::Message::hops(), fawkes::bb_imessage_msg_t::msg_type, fawkes::bb_imessage_msg_t::msgid, fawkes::bb_imessage_msg_t::serial, fawkes::Interface::serial(), fawkes::Message::set_id(), fawkes::bb_imessage_msg_t::source, fawkes::Message::source_id(), and fawkes::Message::type().
|
virtual |
Get writer of interface.
interface | an interface to query for the UID |
Implements fawkes::InterfaceMediator.
Definition at line 313 of file interface_proxy.cpp.
Referenced by BlackBoardInterfaceProxy().
void fawkes::BlackBoardInterfaceProxy::writer_added | ( | Uuid | event_serial | ) |
Writer has been added.
event_serial | instance serial of the interface that caused the event |
Definition at line 250 of file interface_proxy.cpp.
References fawkes::BlackBoardNotifier::notify_of_writer_added().
void fawkes::BlackBoardInterfaceProxy::writer_removed | ( | Uuid | event_serial | ) |
Writer has been removed.
event_serial | instance serial of the interface that caused the event |
Definition at line 260 of file interface_proxy.cpp.
References fawkes::BlackBoardNotifier::notify_of_writer_removed().