23 #ifndef _BLACKBOARD_INTERFACE_MANAGER_H_
24 #define _BLACKBOARD_INTERFACE_MANAGER_H_
26 #include <core/utils/lock_map.h>
27 #include <interface/mediators/interface_mediator.h>
28 #include <utils/misc/string_compare.h>
36 class InterfaceInfoList;
37 class BlackBoardMemoryManager;
38 class BlackBoardMessageManager;
40 class BlackBoardInstanceFactory;
41 class BlackBoardInterfaceListener;
42 class BlackBoardInterfaceObserver;
43 class BlackBoardNotifier;
57 open_for_reading(
const char *interface_type,
const char *identifier,
const char *owner = NULL);
59 open_for_writing(
const char *interface_type,
const char *identifier,
const char *owner = NULL);
66 const char *id_pattern =
"*",
67 const char *owner = NULL);
76 std::list<std::string>
readers(
const std::string &uid)
const;
77 std::string
writer(
const std::string &uid)
const;
82 Interface *new_interface_instance(
const char *type,
const char *identifier,
const char *owner);
83 void delete_interface_instance(
Interface *interface);
85 void * find_interface_in_memory(
const char *type,
const char *identifier);
86 unsigned int next_mem_serial();
87 void create_interface(
const char *type,
88 const char *identifier,
93 Interface *writer_for_mem_serial(
unsigned int mem_serial);
96 unsigned int instance_serial;
107 typedef struct _OwnerInfo
109 _OwnerInfo() :
writer(NULL)
113 std::list<Interface *>
readers;
BlackBoard instance factory.
BlackBoard interface manager.
virtual unsigned int num_readers(const Interface *interface) const
Get number of readers.
virtual std::list< std::string > readers(const Interface *interface) const
Get owners of interfaces who opened for reading.
BlackBoardInterfaceManager(BlackBoardMemoryManager *bb_memmgr, BlackBoardMessageManager *bb_msgmgr, BlackBoardNotifier *bb_notifier)
Constructor.
InterfaceInfoList * list_all() const
Get a list of interfaces.
std::list< Interface * > open_multiple_for_reading(const char *type_pattern, const char *id_pattern="*", const char *owner=NULL)
Open all interfaces of the given type for reading.
InterfaceInfoList * list(const char *type_pattern, const char *id_pattern) const
Get a constrained list of interfaces.
virtual bool exists_writer(const Interface *interface) const
Check if a writer exists for the given interface.
Interface * open_for_writing(const char *interface_type, const char *identifier, const char *owner=NULL)
Open interface for writing.
virtual std::string writer(const Interface *interface) const
Get writer of interface.
virtual void notify_of_data_refresh(const Interface *interface, bool has_changed)
Notify of data change.
virtual ~BlackBoardInterfaceManager()
Destructor.
void close(Interface *interface)
Close interface.
Interface * open_for_reading(const char *interface_type, const char *identifier, const char *owner=NULL)
Open interface for reading.
BlackBoard memory manager.
BlackBoard message manager.
Interface information list.
Base class for all Fawkes BlackBoard interfaces.
Mutex mutual exclusion lock.
Fawkes library namespace.