Fawkes API
Fawkes Development Version
|
23 #ifndef _BLACKBOARD_BLACKBOARD_H_
24 #define _BLACKBOARD_BLACKBOARD_H_
26 #include <core/exceptions/software.h>
27 #include <interface/interface.h>
35 class BlackBoardInterfaceManager;
36 class BlackBoardMemoryManager;
37 class BlackBoardMessageManager;
38 class BlackBoardNetworkHandler;
39 class BlackBoardNotifier;
40 class InterfaceInfoList;
41 class BlackBoardInterfaceListener;
42 class BlackBoardInterfaceObserver;
43 class FawkesNetworkHub;
51 const char *identifier,
52 const char *owner = NULL) = 0;
54 const char *identifier,
55 const char *owner = NULL) = 0;
63 virtual bool is_alive()
const throw() = 0;
67 const
char *id_pattern = "*",
68 const
char *owner = NULL) = 0;
70 template <class InterfaceType>
72 const
char *owner = NULL);
74 template <class InterfaceType>
75 InterfaceType *
open_for_reading(const
char *identifier, const
char *owner = NULL);
77 template <class InterfaceType>
78 InterfaceType *
open_for_writing(const
char *identifier, const
char *owner = NULL);
80 template <class InterfaceType>
83 template <class InterfaceType>
129 template <
class InterfaceType>
135 return static_cast<InterfaceType *
>(interface);
151 template <
class InterfaceType>
156 va_start(arg, identifier);
161 return static_cast<InterfaceType *
>(interface);
175 template <
class InterfaceType>
176 std::list<InterfaceType *>
181 std::list<InterfaceType *> rv;
182 for (std::list<Interface *>::iterator i = il.begin(); i != il.end(); ++i) {
183 rv.push_back(
static_cast<InterfaceType *
>(*i));
206 template <
class InterfaceType>
211 Interface *
interface =
open_for_writing(type_name.c_str(), identifier, owner);
212 return static_cast<InterfaceType *
>(interface);
231 template <
class InterfaceType>
236 va_start(arg, identifier);
241 return static_cast<InterfaceType *
>(interface);
virtual InterfaceInfoList * list_all()=0
@ BBIL_FLAG_MESSAGES
consider message received events
@ BBIL_FLAG_DATA
consider data events
virtual void register_listener(BlackBoardInterfaceListener *listener, ListenerRegisterFlag flag=BBIL_FLAG_ALL)
Register BB event listener.
virtual bool try_aliveness_restore()=0
virtual void unregister_listener(BlackBoardInterfaceListener *listener)
Unregister BB interface listener.
@ BBIL_FLAG_READER
consider reader events
virtual InterfaceInfoList * list(const char *type_pattern, const char *id_pattern)=0
BlackBoard::ListenerRegisterFlag operator&(const BlackBoard::ListenerRegisterFlag &a, const BlackBoard::ListenerRegisterFlag &b)
Testing of register flags.
BlackBoardNotifier * notifier_
Notifier for BB events.
virtual void close(Interface *interface)=0
virtual Interface * open_for_reading_f(const char *interface_type, const char *identifier,...)
Open interface for reading with identifier format string.
std::string format_identifier(const char *identifier_format, va_list arg)
Get formatted identifier string.
std::string demangle_fawkes_interface_name(const char *type)
Produce interface name from C++ signature.
virtual ~BlackBoard()
Destructor.
ListenerRegisterFlag
Flags to constrain listener registration/updates.
virtual void register_observer(BlackBoardInterfaceObserver *observer)
Register BB interface observer.
virtual bool is_alive() const =0
@ BBIL_FLAG_WRITER
consider writer events
virtual void unregister_observer(BlackBoardInterfaceObserver *observer)
Unregister BB interface observer.
BlackBoard::ListenerRegisterFlag operator|(const BlackBoard::ListenerRegisterFlag &a, const BlackBoard::ListenerRegisterFlag &b)
Concatenation of register flags.
virtual Interface * open_for_reading(const char *interface_type, const char *identifier, const char *owner=NULL)=0
virtual std::list< Interface * > open_multiple_for_reading(const char *type_pattern, const char *id_pattern="*", const char *owner=NULL)=0
@ BBIL_FLAG_ALL
consider all events
BlackBoard(bool create_notifier=true)
Constructor.
virtual Interface * open_for_writing_f(const char *interface_type, const char *identifier,...)
Open interface for writing with identifier format string.
virtual Interface * open_for_writing(const char *interface_type, const char *identifier, const char *owner=NULL)=0
virtual void update_listener(BlackBoardInterfaceListener *listener, ListenerRegisterFlag flag=BBIL_FLAG_ALL)
Update BB event listener.