24 #ifndef __BLACKBOARD_BLACKBOARD_H_ 25 #define __BLACKBOARD_BLACKBOARD_H_ 27 #include <core/exceptions/software.h> 28 #include <interface/interface.h> 39 class BlackBoardInterfaceManager;
40 class BlackBoardMemoryManager;
41 class BlackBoardMessageManager;
42 class BlackBoardNetworkHandler;
43 class BlackBoardNotifier;
44 class InterfaceInfoList;
45 class BlackBoardInterfaceListener;
46 class BlackBoardInterfaceObserver;
47 class FawkesNetworkHub;
56 const char *identifier) = 0;
58 const char *identifier) = 0;
63 const char *id_pattern) = 0;
64 virtual bool is_alive()
const throw() = 0;
67 virtual std::list<Interface *>
69 const char *id_pattern =
"*") = 0;
71 template <
class InterfaceType>
72 std::list<InterfaceType *>
75 template <
class InterfaceType>
78 template <
class InterfaceType>
119 template <
class InterfaceType>
123 std::string type_name =
126 return static_cast<InterfaceType *
>(interface);
139 template <
class InterfaceType>
140 std::list<InterfaceType *>
143 std::string type_name =
145 std::list<Interface *> il =
147 std::list<InterfaceType *> rv;
148 for (std::list<Interface *>::iterator i = il.begin(); i != il.end(); ++i) {
149 rv.push_back(static_cast<InterfaceType *>(*i));
171 template <
class InterfaceType>
175 std::string type_name =
178 return static_cast<InterfaceType *
>(interface);;
virtual void register_observer(BlackBoardInterfaceObserver *observer)
Register BB interface observer.
BlackBoard::ListenerRegisterFlag operator&(const BlackBoard::ListenerRegisterFlag &a, const BlackBoard::ListenerRegisterFlag &b)
Testing of register flags.
ListenerRegisterFlag
Flags to constrain listener registraion/updates.
BlackBoard::ListenerRegisterFlag operator|(const BlackBoard::ListenerRegisterFlag &a, const BlackBoard::ListenerRegisterFlag &b)
Concatenation of register flags.
Fawkes library namespace.
virtual bool try_aliveness_restore()=0
Try to restore the aliveness of the BlackBoard instance.
virtual void unregister_listener(BlackBoardInterfaceListener *listener)
Unregister BB interface listener.
virtual void update_listener(BlackBoardInterfaceListener *listener, ListenerRegisterFlag flag=BBIL_FLAG_ALL)
Update BB event listener.
Base class for all Fawkes BlackBoard interfaces.
virtual Interface * open_for_writing(const char *interface_type, const char *identifier)=0
Open interface for writing.
virtual InterfaceInfoList * list(const char *type_pattern, const char *id_pattern)=0
Get list of interfaces matching type and ID patterns.
consider message received events
virtual void register_listener(BlackBoardInterfaceListener *listener, ListenerRegisterFlag flag=BBIL_FLAG_ALL)
Register BB event listener.
Interface information list.
virtual void unregister_observer(BlackBoardInterfaceObserver *observer)
Unregister BB interface observer.
BlackBoardNotifier * __notifier
Notifier for BB events.
BlackBoard interface observer.
virtual ~BlackBoard()
Destructor.
virtual InterfaceInfoList * list_all()=0
Get list of all currently existing interfaces.
virtual bool is_alive() const =0
Check if the BlackBoard is still alive.
virtual Interface * open_for_reading(const char *interface_type, const char *identifier)=0
Open interface for reading.
The BlackBoard abstract class.
virtual std::list< Interface * > open_multiple_for_reading(const char *type_pattern, const char *id_pattern="*")=0
Open multiple interfaces for reading.
BlackBoard interface listener.
std::string demangle_fawkes_interface_name(const char *type)
Produce interface name from C++ signature.
virtual void close(Interface *interface)=0
Close interface.