Fawkes API  Fawkes Development Version
BlackboardListenerThread Class Reference

Keeps a queue of subscribed blackboard events that can be queried in a thread-safe manner. More...

#include <blackboard_listener_thread.h>

Inheritance diagram for BlackboardListenerThread:

Classes

class  Changed
 An interface changed. More...
 
class  Created
 A new interface was created. More...
 
class  Destroyed
 An interface was destroyed. More...
 
class  Event
 Abstract superclass for blackboard events. More...
 

Public Member Functions

void observe_pattern (const char *type_pattern, const char *id_pattern) noexcept
 Trigger events if an interface matching the pattern is created or destroyed. More...
 
void listen_for_change (Interface *interface) noexcept
 Register. More...
 
virtual void bb_interface_created (const char *type, const char *id) noexcept override
 Called by the BlackBoardInterfaceObserver when an interface matching a subscribed pattern is created. More...
 
virtual void bb_interface_destroyed (const char *type, const char *id) noexcept override
 Called by the BlackBoardInterfaceObserver when an interface is destroyed. More...
 
virtual void bb_interface_data_changed (Interface *interface) noexcept override
 Called by the BlackBoardInterfaceListener when an interface changes. More...
 
bool event_pending ()
 Test whether any events are in the queue. More...
 
shared_ptr< Eventevent_pop ()
 Return and remove the next event in the queue. More...
 
- Public Member Functions inherited from fawkes::Thread
virtual ~Thread ()
 Virtual destructor. More...
 
virtual void init ()
 Initialize the thread. More...
 
bool prepare_finalize ()
 Prepare finalization. More...
 
virtual bool prepare_finalize_user ()
 Prepare finalization user implementation. More...
 
virtual void finalize ()
 Finalize the thread. More...
 
void cancel_finalize ()
 Cancel finalization. More...
 
void start (bool wait=true)
 Call this method to start the thread. More...
 
void cancel ()
 Cancel a thread. More...
 
void join ()
 Join the thread. More...
 
void detach ()
 Detach the thread. More...
 
void kill (int sig)
 Send signal to a thread. More...
 
bool operator== (const Thread &thread)
 Check if two threads are the same. More...
 
void wakeup ()
 Wake up thread. More...
 
void wakeup (Barrier *barrier)
 Wake up thread and wait for barrier afterwards. More...
 
void wait_loop_done ()
 Wait for the current loop iteration to finish. More...
 
OpMode opmode () const
 Get operation mode. More...
 
pthread_t thread_id () const
 Get ID of thread. More...
 
bool started () const
 Check if thread has been started. More...
 
bool cancelled () const
 Check if thread has been cancelled. More...
 
bool detached () const
 Check if thread has been detached. More...
 
bool running () const
 Check if the thread is running. More...
 
bool waiting () const
 Check if thread is currently waiting for wakeup. More...
 
const char * name () const
 Get name of thread. More...
 
void set_flags (uint32_t flags)
 Set all flags in one go. More...
 
void set_flag (uint32_t flag)
 Set flag for the thread. More...
 
void unset_flag (uint32_t flag)
 Unset flag. More...
 
bool flagged_bad () const
 Check if FLAG_BAD was set. More...
 
void set_delete_on_exit (bool del)
 Set whether the thread should be deleted on exit. More...
 
void set_prepfin_hold (bool hold)
 Hold prepare_finalize(). More...
 
void add_notification_listener (ThreadNotificationListener *notification_listener)
 Add notification listener. More...
 
void remove_notification_listener (ThreadNotificationListener *notification_listener)
 Remove notification listener. More...
 
void notify_of_failed_init ()
 Notify of failed init. More...
 
void add_loop_listener (ThreadLoopListener *loop_listener)
 Add loop listener. More...
 
void remove_loop_listener (ThreadLoopListener *loop_listener)
 Remove loop listener. More...
 
- Public Member Functions inherited from fawkes::LoggingAspect
 LoggingAspect ()
 Constructor. More...
 
virtual ~LoggingAspect ()
 Virtual empty Destructor. More...
 
void init_LoggingAspect (Logger *logger)
 Set the logger. More...
 
- Public Member Functions inherited from fawkes::Aspect
const std::list< const char * > & get_aspects () const
 Get list of aspect names attached to a aspected thread. More...
 
- Public Member Functions inherited from fawkes::ConfigurableAspect
 ConfigurableAspect ()
 Constructor. More...
 
virtual ~ConfigurableAspect ()
 Virtual empty Destructor. More...
 
void init_ConfigurableAspect (Configuration *config)
 Set the configuration It is guaranteed that this is called for a configurable thread before Thread::start() is called (when running regularly inside Fawkes). More...
 
- Public Member Functions inherited from fawkes::BlackBoardAspect
 BlackBoardAspect (const char *owner=NULL)
 Constructor. More...
 
virtual ~BlackBoardAspect ()
 Virtual empty destructor. More...
 
void init_BlackBoardAspect (BlackBoard *bb)
 Init BlackBoard aspect. More...
 
- Public Member Functions inherited from fawkes::BlackBoardInterfaceObserver
 BlackBoardInterfaceObserver ()
 Empty constructor. More...
 
virtual ~BlackBoardInterfaceObserver ()
 Destructor. More...
 
- Public Member Functions inherited from fawkes::BlackBoardInterfaceListener
 BlackBoardInterfaceListener (const char *name_format,...)
 Constructor. More...
 
virtual ~BlackBoardInterfaceListener ()
 Destructor. More...
 
const char * bbil_name () const
 Get BBIL name. More...
 
virtual bool bb_interface_message_received (Interface *interface, Message *message) throw ()
 BlackBoard message received notification. More...
 
virtual void bb_interface_writer_added (Interface *interface, unsigned int instance_serial) throw ()
 A writing instance has been opened for a watched interface. More...
 
virtual void bb_interface_writer_removed (Interface *interface, unsigned int instance_serial) throw ()
 A writing instance has been closed for a watched interface. More...
 
virtual void bb_interface_reader_added (Interface *interface, unsigned int instance_serial) throw ()
 A reading instance has been opened for a watched interface. More...
 
virtual void bb_interface_reader_removed (Interface *interface, unsigned int instance_serial) throw ()
 A reading instance has been closed for a watched interface. More...
 

Static Public Member Functions

static BlackboardListenerThreadinstance ()
 Get the singleton instance of this thread. More...
 
static void cleanup_instance ()
 Delete singleton instance, e.g. More...
 
- Static Public Member Functions inherited from fawkes::Thread
static Threadcurrent_thread ()
 Get the Thread instance of the currently running thread. More...
 
static Threadcurrent_thread_noexc () throw ()
 Similar to current_thread, but does never throw an exception. More...
 
static pthread_t current_thread_id ()
 Get the ID of the currently running thread. More...
 
static std::string current_thread_name ()
 Get the name of the current thread. More...
 
static void current_thread_name (const std::string &thread_name)
 Set the name of the current thread. More...
 
static void init_main ()
 Initialize Thread wrapper instance for main thread. More...
 
static void destroy_main ()
 Destroy main thread wrapper instance. More...
 
static void set_cancel_state (CancelState new_state, CancelState *old_state=0)
 Set the cancel state of the current thread. More...
 

Additional Inherited Members

- Public Types inherited from fawkes::Thread
enum  OpMode { OPMODE_CONTINUOUS, OPMODE_WAITFORWAKEUP }
 Thread operation mode. More...
 
enum  CancelState { CANCEL_ENABLED, CANCEL_DISABLED }
 Cancel state. More...
 
- Public Types inherited from fawkes::BlackBoardInterfaceListener
enum  QueueEntryType { DATA = 0, MESSAGES = 1, READER = 2, WRITER = 3 }
 Queue entry type. More...
 
typedef std::list< QueueEntryInterfaceQueue
 Queue of additions/removal of interfaces. More...
 
typedef std::map< std::string, Interface * > InterfaceMap
 Map of currently active event subscriptions. More...
 
- Static Public Attributes inherited from fawkes::Thread
static const unsigned int FLAG_BAD = 0x00000001
 Standard thread flag: "thread is bad". More...
 
- Protected Types inherited from fawkes::BlackBoardInterfaceObserver
typedef LockMap< std::string, std::list< std::string > > ObservedInterfaceLockMap
 Type for lockable interface type hash sets. More...
 
typedef ObservedInterfaceLockMap::iterator ObservedInterfaceLockMapIterator
 Type for iterator of lockable interface type hash sets. More...
 
- Protected Member Functions inherited from fawkes::Thread
 Thread (const char *name)
 Constructor. More...
 
 Thread (const char *name, OpMode op_mode)
 Constructor. More...
 
void exit ()
 Exit the thread. More...
 
void test_cancel ()
 Set cancellation point. More...
 
void yield ()
 Yield the processor to another thread or process. More...
 
virtual void run ()
 Code to execute in the thread. More...
 
void set_opmode (OpMode op_mode)
 Set operation mode. More...
 
void set_prepfin_conc_loop (bool concurrent=true)
 Set concurrent execution of prepare_finalize() and loop(). More...
 
void set_coalesce_wakeups (bool coalesce=true)
 Set wakeup coalescing. More...
 
void set_name (const char *format,...)
 Set name of thread. More...
 
virtual void once ()
 Execute an action exactly once. More...
 
virtual void loop ()
 Code to execute in the thread. More...
 
bool wakeup_pending ()
 Check if wakeups are pending. More...
 
- Protected Member Functions inherited from fawkes::Aspect
void add_aspect (const char *name)
 Add an aspect to a thread. More...
 
- Protected Member Functions inherited from fawkes::BlackBoardInterfaceObserver
void bbio_add_observed_create (const char *type_pattern, const char *id_pattern="*") throw ()
 Add interface creation type to watch list. More...
 
void bbio_add_observed_destroy (const char *type_pattern, const char *id_pattern="*") throw ()
 Add interface destruction type to watch list. More...
 
ObservedInterfaceLockMapbbio_get_observed_create () throw ()
 Get interface creation type watch list. More...
 
ObservedInterfaceLockMapbbio_get_observed_destroy () throw ()
 Get interface destriction type watch list. More...
 
- Protected Member Functions inherited from fawkes::BlackBoardInterfaceListener
void bbil_add_data_interface (Interface *interface)
 Add an interface to the data modification watch list. More...
 
void bbil_add_message_interface (Interface *interface)
 Add an interface to the message received watch list. More...
 
void bbil_add_reader_interface (Interface *interface)
 Add an interface to the reader addition/removal watch list. More...
 
void bbil_add_writer_interface (Interface *interface)
 Add an interface to the writer addition/removal watch list. More...
 
void bbil_remove_data_interface (Interface *interface)
 Remove an interface to the data modification watch list. More...
 
void bbil_remove_message_interface (Interface *interface)
 Remove an interface to the message received watch list. More...
 
void bbil_remove_reader_interface (Interface *interface)
 Remove an interface to the reader addition/removal watch list. More...
 
void bbil_remove_writer_interface (Interface *interface)
 Remove an interface to the writer addition/removal watch list. More...
 
Interfacebbil_data_interface (const char *iuid) throw ()
 Get interface instance for given UID. More...
 
Interfacebbil_message_interface (const char *iuid) throw ()
 Get interface instance for given UID. More...
 
Interfacebbil_reader_interface (const char *iuid) throw ()
 Get interface instance for given UID. More...
 
Interfacebbil_writer_interface (const char *iuid) throw ()
 Get interface instance for given UID. More...
 
- Protected Attributes inherited from fawkes::Thread
bool finalize_prepared
 True if prepare_finalize() has been called and was not stopped with a cancel_finalize(), false otherwise. More...
 
Mutexloop_mutex
 Mutex that is used to protect a call to loop(). More...
 
Mutexloopinterrupt_antistarve_mutex
 Mutex to avoid starvation when trying to lock loop_mutex. More...
 
- Protected Attributes inherited from fawkes::LoggingAspect
Loggerlogger
 This is the Logger member used to access the logger. More...
 
- Protected Attributes inherited from fawkes::ConfigurableAspect
Configurationconfig
 This is the Configuration member used to access the configuration. More...
 
- Protected Attributes inherited from fawkes::BlackBoardAspect
BlackBoardblackboard
 This is the BlackBoard instance you can use to interact with the BlackBoard. More...
 

Detailed Description

Keeps a queue of subscribed blackboard events that can be queried in a thread-safe manner.

Definition at line 39 of file blackboard_listener_thread.h.

Member Function Documentation

◆ bb_interface_created()

void BlackboardListenerThread::bb_interface_created ( const char *  type,
const char *  id 
)
overridevirtualnoexcept

Called by the BlackBoardInterfaceObserver when an interface matching a subscribed pattern is created.

Parameters
typeInterface type name
idInterface ID

Reimplemented from fawkes::BlackBoardInterfaceObserver.

Definition at line 78 of file blackboard_listener_thread.cpp.

◆ bb_interface_data_changed()

void BlackboardListenerThread::bb_interface_data_changed ( Interface interface)
overridevirtualnoexcept

Called by the BlackBoardInterfaceListener when an interface changes.

Parameters
interfaceThe changed interface

Reimplemented from fawkes::BlackBoardInterfaceListener.

Definition at line 99 of file blackboard_listener_thread.cpp.

◆ bb_interface_destroyed()

void BlackboardListenerThread::bb_interface_destroyed ( const char *  type,
const char *  id 
)
overridevirtualnoexcept

Called by the BlackBoardInterfaceObserver when an interface is destroyed.

Parameters
typeInterface type name
idInterface ID

Reimplemented from fawkes::BlackBoardInterfaceObserver.

Definition at line 89 of file blackboard_listener_thread.cpp.

◆ cleanup_instance()

void BlackboardListenerThread::cleanup_instance ( )
static

Delete singleton instance, e.g.

when unloading the plugin

Definition at line 48 of file blackboard_listener_thread.cpp.

◆ event_pending()

bool BlackboardListenerThread::event_pending ( )

Test whether any events are in the queue.

Returns
Whether any events are in the queue

Definition at line 109 of file blackboard_listener_thread.cpp.

◆ event_pop()

shared_ptr< BlackboardListenerThread::Event > BlackboardListenerThread::event_pop ( )

Return and remove the next event in the queue.

Returns
The next event

Definition at line 119 of file blackboard_listener_thread.cpp.

◆ instance()

BlackboardListenerThread * BlackboardListenerThread::instance ( )
static

Get the singleton instance of this thread.

Returns
THE instance

Definition at line 39 of file blackboard_listener_thread.cpp.

Referenced by EclipseAgentThread::loop().

◆ listen_for_change()

void BlackboardListenerThread::listen_for_change ( Interface interface)
noexcept

Register.

Parameters
interfacefor change notifications

Definition at line 67 of file blackboard_listener_thread.cpp.

◆ observe_pattern()

void BlackboardListenerThread::observe_pattern ( const char *  type_pattern,
const char *  id_pattern 
)
noexcept

Trigger events if an interface matching the pattern is created or destroyed.

Parameters
type_patternSee BlackBoardInterfaceObserver::bbio_add_observed_create
id_patternSee BlackBoardInterfaceObserver::bbio_add_observed_create

Definition at line 58 of file blackboard_listener_thread.cpp.


The documentation for this class was generated from the following files: