23 #ifndef __BLACKBOARD_BLACKBOARD_H_ 24 #define __BLACKBOARD_BLACKBOARD_H_ 26 #include <core/exceptions/software.h> 27 #include <interface/interface.h> 38 class BlackBoardInterfaceManager;
39 class BlackBoardMemoryManager;
40 class BlackBoardMessageManager;
41 class BlackBoardNetworkHandler;
42 class BlackBoardNotifier;
43 class InterfaceInfoList;
44 class BlackBoardInterfaceListener;
45 class BlackBoardInterfaceObserver;
46 class FawkesNetworkHub;
54 const char *identifier,
55 const char *owner = NULL) = 0;
57 const char *identifier,
58 const char *owner = NULL) = 0;
62 const char *identifier, ...);
64 const char *identifier, ...);
69 const char *id_pattern) = 0;
70 virtual bool is_alive()
const throw() = 0;
73 virtual std::list<Interface *>
75 const char *id_pattern =
"*",
76 const char *owner = NULL) = 0;
78 template <
class InterfaceType>
79 std::list<InterfaceType *>
81 const char *owner = NULL);
83 template <
class InterfaceType>
85 const char *owner = NULL);
87 template <
class InterfaceType>
89 const char *owner = NULL);
91 template <
class InterfaceType>
94 template <
class InterfaceType>
141 template <
class InterfaceType>
145 std::string type_name =
148 return static_cast<InterfaceType *
>(interface);
165 template <
class InterfaceType>
170 va_start(arg, identifier);
171 std::string type_name =
176 return static_cast<InterfaceType *
>(interface);
191 template <
class InterfaceType>
192 std::list<InterfaceType *>
195 std::string type_name =
197 std::list<Interface *> il =
199 std::list<InterfaceType *> rv;
200 for (std::list<Interface *>::iterator i = il.begin(); i != il.end(); ++i) {
201 rv.push_back(static_cast<InterfaceType *>(*i));
225 template <
class InterfaceType>
229 std::string type_name =
232 return static_cast<InterfaceType *
>(interface);;
251 template <
class InterfaceType>
256 va_start(arg, identifier);
257 std::string type_name =
262 return static_cast<InterfaceType *
>(interface);;
virtual void register_observer(BlackBoardInterfaceObserver *observer)
Register BB interface observer.
ListenerRegisterFlag
Flags to constrain listener registration/updates.
std::string format_identifier(const char *identifier_format, va_list arg)
Get formatted identifier string.
BlackBoard::ListenerRegisterFlag operator|(const BlackBoard::ListenerRegisterFlag &a, const BlackBoard::ListenerRegisterFlag &b)
Concatenation of register flags.
Fawkes library namespace.
virtual Interface * open_for_reading_f(const char *interface_type, const char *identifier,...)
Open interface for reading with identifier format string.
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 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 bool is_alive() const =0
Check if the BlackBoard is still alive.
virtual void unregister_observer(BlackBoardInterfaceObserver *observer)
Unregister BB interface observer.
virtual Interface * open_for_writing_f(const char *interface_type, const char *identifier,...)
Open interface for writing with identifier format string.
BlackBoardNotifier * __notifier
Notifier for BB events.
virtual std::list< Interface * > open_multiple_for_reading(const char *type_pattern, const char *id_pattern="*", const char *owner=NULL)=0
Open multiple interfaces for reading.
BlackBoard interface observer.
BlackBoard(bool create_notifier=true)
Constructor.
virtual ~BlackBoard()
Destructor.
virtual InterfaceInfoList * list_all()=0
Get list of all currently existing interfaces.
virtual Interface * open_for_reading(const char *interface_type, const char *identifier, const char *owner=NULL)=0
Open interface for reading.
The BlackBoard abstract class.
BlackBoard::ListenerRegisterFlag operator &(const BlackBoard::ListenerRegisterFlag &a, const BlackBoard::ListenerRegisterFlag &b)
Testing of register flags.
virtual Interface * open_for_writing(const char *interface_type, const char *identifier, const char *owner=NULL)=0
Open interface for writing.
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.