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. | |
~BlackBoardInterfaceProxy () | |
Destructor. | |
void | process_data_changed (FawkesNetworkMessage *msg) |
Process MSG_BB_DATA_CHANGED message. | |
void | process_interface_message (FawkesNetworkMessage *msg) |
Process MSG_BB_INTERFACE message. | |
void | reader_added (unsigned int event_serial) |
Reader has been added. | |
void | reader_removed (unsigned int event_serial) |
Reader has been removed. | |
void | writer_added (unsigned int event_serial) |
Writer has been added. | |
void | writer_removed (unsigned int event_serial) |
Writer has been removed. | |
unsigned int | serial () const |
Get instance serial of interface. | |
unsigned int | clid () const |
Get client ID of assigned client. | |
Interface * | interface () const |
Get instance serial of interface. | |
virtual bool | exists_writer (const Interface *interface) const |
Check if a writer exists for the given interface. | |
virtual unsigned int | num_readers (const Interface *interface) const |
Get number of readers. | |
virtual void | notify_of_data_change (const Interface *interface) |
Notify of data change. | |
virtual void | transmit (Message *message) |
Transmit message. |
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.
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 56 of file interface_proxy.cpp.
References fawkes::FawkesNetworkMessage::msgid(), fawkes::FawkesNetworkMessage::payload(), interface(), fawkes::bb_iopensucc_msg_t::serial, fawkes::bb_iopensucc_msg_t::has_writer, fawkes::bb_iopensucc_msg_t::num_readers, fawkes::bb_iopensucc_msg_t::data_size, fawkes::FawkesNetworkMessage::clid(), fawkes::Interface::datasize(), fawkes::interface_header_t::type, fawkes::Interface::type(), fawkes::interface_header_t::id, fawkes::Interface::id(), fawkes::interface_header_t::hash, fawkes::Interface::hash(), fawkes::interface_header_t::flag_writer_active, fawkes::interface_header_t::num_readers, and fawkes::interface_header_t::refcount.
fawkes::BlackBoardInterfaceProxy::~BlackBoardInterfaceProxy | ( | ) |
Destructor.
Definition at line 105 of file interface_proxy.cpp.
unsigned int fawkes::BlackBoardInterfaceProxy::clid | ( | ) | const |
Get client ID of assigned client.
Definition at line 256 of file interface_proxy.cpp.
bool fawkes::BlackBoardInterfaceProxy::exists_writer | ( | const Interface * | interface | ) | const [virtual] |
Check if a writer exists for the given interface.
interface | interface to check |
Implements fawkes::InterfaceMediator.
Definition at line 273 of file interface_proxy.cpp.
Interface * fawkes::BlackBoardInterfaceProxy::interface | ( | ) | const |
Get instance serial of interface.
Definition at line 265 of file interface_proxy.cpp.
Referenced by BlackBoardInterfaceProxy().
void fawkes::BlackBoardInterfaceProxy::notify_of_data_change | ( | const Interface * | interface | ) | [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 |
Implements fawkes::InterfaceMediator.
Definition at line 285 of file interface_proxy.cpp.
References fawkes::Interface::datasize(), fawkes::bb_idata_msg_t::serial, fawkes::Interface::serial(), fawkes::bb_idata_msg_t::data_size, fawkes::Interface::datachunk(), and fawkes::FawkesNetworkClient::enqueue().
unsigned int fawkes::BlackBoardInterfaceProxy::num_readers | ( | const Interface * | interface | ) | const [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 279 of file interface_proxy.cpp.
void fawkes::BlackBoardInterfaceProxy::process_data_changed | ( | FawkesNetworkMessage * | msg | ) |
Process MSG_BB_DATA_CHANGED message.
msg | message to process. |
Definition at line 115 of file interface_proxy.cpp.
References fawkes::FawkesNetworkMessage::msgid(), fawkes::LibLogger::log_error(), fawkes::FawkesNetworkMessage::payload(), fawkes::bb_idata_msg_t::serial, fawkes::bb_idata_msg_t::data_size, and fawkes::BlackBoardNotifier::notify_of_data_change().
void fawkes::BlackBoardInterfaceProxy::process_interface_message | ( | FawkesNetworkMessage * | msg | ) |
Process MSG_BB_INTERFACE message.
msg | message to process. |
Definition at line 147 of file interface_proxy.cpp.
References fawkes::FawkesNetworkMessage::msgid(), fawkes::LibLogger::log_error(), fawkes::FawkesNetworkMessage::payload(), fawkes::bb_imessage_msg_t::serial, fawkes::Interface::is_writer(), fawkes::Interface::uid(), fawkes::Interface::create_message(), fawkes::bb_imessage_msg_t::msg_type, fawkes::Message::set_id(), fawkes::bb_imessage_msg_t::msgid, fawkes::Message::set_hops(), fawkes::bb_imessage_msg_t::hops, fawkes::Message::hops(), fawkes::LibLogger::log_warn(), fawkes::Message::type(), fawkes::bb_imessage_msg_t::data_size, fawkes::Message::datasize(), fawkes::Message::set_from_chunk(), fawkes::BlackBoardNotifier::notify_of_message_received(), and fawkes::Exception::append().
void fawkes::BlackBoardInterfaceProxy::reader_added | ( | unsigned int | event_serial | ) |
Reader has been added.
event_serial | instance serial of the interface that caused the event |
Definition at line 203 of file interface_proxy.cpp.
References fawkes::BlackBoardNotifier::notify_of_reader_added().
void fawkes::BlackBoardInterfaceProxy::reader_removed | ( | unsigned int | event_serial | ) |
Reader has been removed.
event_serial | instance serial of the interface that caused the event |
Definition at line 213 of file interface_proxy.cpp.
References fawkes::BlackBoardNotifier::notify_of_reader_removed().
unsigned int fawkes::BlackBoardInterfaceProxy::serial | ( | ) | const |
Get instance serial of interface.
Definition at line 246 of file interface_proxy.cpp.
void fawkes::BlackBoardInterfaceProxy::transmit | ( | Message * | message | ) | [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 305 of file interface_proxy.cpp.
References fawkes::Message::datasize(), fawkes::bb_imessage_msg_t::serial, fawkes::Interface::serial(), fawkes::bb_imessage_msg_t::msgid, fawkes::bb_imessage_msg_t::hops, fawkes::Message::hops(), fawkes::Message::set_id(), fawkes::bb_imessage_msg_t::msg_type, fawkes::Message::type(), fawkes::bb_imessage_msg_t::data_size, fawkes::Message::datachunk(), and fawkes::FawkesNetworkClient::enqueue().
void fawkes::BlackBoardInterfaceProxy::writer_added | ( | unsigned int | event_serial | ) |
Writer has been added.
event_serial | instance serial of the interface that caused the event |
Definition at line 225 of file interface_proxy.cpp.
References fawkes::BlackBoardNotifier::notify_of_writer_added().
void fawkes::BlackBoardInterfaceProxy::writer_removed | ( | unsigned int | event_serial | ) |
Writer has been removed.
event_serial | instance serial of the interface that caused the event |
Definition at line 235 of file interface_proxy.cpp.
References fawkes::BlackBoardNotifier::notify_of_writer_removed().