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_changed (FawkesNetworkMessage *msg) |
Process MSG_BB_DATA_CHANGED message. More... | |
void | process_interface_message (FawkesNetworkMessage *msg) |
Process MSG_BB_INTERFACE message. More... | |
void | reader_added (unsigned int event_serial) |
Reader has been added. More... | |
void | reader_removed (unsigned int event_serial) |
Reader has been removed. More... | |
void | writer_added (unsigned int event_serial) |
Writer has been added. More... | |
void | writer_removed (unsigned int event_serial) |
Writer has been removed. More... | |
unsigned int | serial () const |
Get instance serial of interface. More... | |
unsigned int | 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_change (const Interface *interface) |
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 39 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 56 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_header_t::hash, fawkes::Interface::hash(), fawkes::interface_header_t::id, fawkes::Interface::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_header_t::type, fawkes::Interface::type(), and fawkes::bb_iopensucc_msg_t::writer_readers.
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 257 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 274 of file interface_proxy.cpp.
Interface * fawkes::BlackBoardInterfaceProxy::interface | ( | ) | const |
Get instance serial of interface.
Definition at line 266 of file interface_proxy.cpp.
Referenced by BlackBoardInterfaceProxy().
|
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 299 of file interface_proxy.cpp.
References fawkes::bb_idata_msg_t::data_size, fawkes::Interface::datachunk(), fawkes::Interface::datasize(), fawkes::FawkesNetworkClient::enqueue(), fawkes::Interface::serial(), and fawkes::bb_idata_msg_t::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 280 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::bb_idata_msg_t::data_size, fawkes::LibLogger::log_error(), fawkes::FawkesNetworkMessage::msgid(), fawkes::BlackBoardNotifier::notify_of_data_change(), 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 147 of file interface_proxy.cpp.
References fawkes::Exception::append(), fawkes::Interface::create_message(), fawkes::bb_imessage_msg_t::data_size, fawkes::Message::datasize(), fawkes::Message::hops(), fawkes::bb_imessage_msg_t::hops, fawkes::Interface::is_writer(), fawkes::LibLogger::log_error(), fawkes::LibLogger::log_warn(), fawkes::bb_imessage_msg_t::msg_type, fawkes::FawkesNetworkMessage::msgid(), fawkes::bb_imessage_msg_t::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::type(), fawkes::Interface::uid(), and fawkes::RefCount::unref().
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 204 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 214 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 286 of file interface_proxy.cpp.
unsigned int fawkes::BlackBoardInterfaceProxy::serial | ( | ) | const |
Get instance serial of interface.
Definition at line 247 of file interface_proxy.cpp.
Referenced by fawkes::RemoteBlackBoard::try_aliveness_restore().
|
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 319 of file interface_proxy.cpp.
References fawkes::bb_imessage_msg_t::data_size, fawkes::Message::datachunk(), fawkes::Message::datasize(), fawkes::FawkesNetworkClient::enqueue(), fawkes::Message::hops(), fawkes::bb_imessage_msg_t::hops, fawkes::bb_imessage_msg_t::msg_type, fawkes::bb_imessage_msg_t::msgid, fawkes::Interface::serial(), fawkes::bb_imessage_msg_t::serial, fawkes::Message::set_id(), and fawkes::Message::type().
|
virtual |
Get writer of interface.
interface | an interface to query for the UID |
Implements fawkes::InterfaceMediator.
Definition at line 293 of file interface_proxy.cpp.
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 226 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 236 of file interface_proxy.cpp.
References fawkes::BlackBoardNotifier::notify_of_writer_removed().