iLab Neuromorphic Robotics Toolkit  0.1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
BlackboardFederationSummaryListener.H
Go to the documentation of this file.
1 /*! @file
2  @author Laurent Itti
3  @copyright GNU Public License (GPL v3)
4  @section License
5  @verbatim
6  // ////////////////////////////////////////////////////////////////////////
7  // The iLab Neuromorphic Robotics Toolkit (NRT) //
8  // Copyright 2010-2012 by the University of Southern California (USC) //
9  // and the iLab at USC. //
10  // //
11  // iLab - University of Southern California //
12  // Hedco Neurociences Building, Room HNB-10 //
13  // Los Angeles, Ca 90089-2520 - USA //
14  // //
15  // See http://ilab.usc.edu for information about this project. //
16  // ////////////////////////////////////////////////////////////////////////
17  // This file is part of The iLab Neuromorphic Robotics Toolkit. //
18  // //
19  // The iLab Neuromorphic Robotics Toolkit is free software: you can //
20  // redistribute it and/or modify it under the terms of the GNU General //
21  // Public License as published by the Free Software Foundation, either //
22  // version 3 of the License, or (at your option) any later version. //
23  // //
24  // The iLab Neuromorphic Robotics Toolkit is distributed in the hope //
25  // that it will be useful, but WITHOUT ANY WARRANTY; without even the //
26  // implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR //
27  // PURPOSE. See the GNU General Public License for more details. //
28  // //
29  // You should have received a copy of the GNU General Public License //
30  // along with The iLab Neuromorphic Robotics Toolkit. If not, see //
31  // <http://www.gnu.org/licenses/>. //
32  // ////////////////////////////////////////////////////////////////////////
33  @endverbatim */
34 
35 
36 #ifndef INCLUDE_NRT_CORE_BLACKBOARD_BLACKBOARDFEDERATIONSUMMARYLISTENER_H
37 #define INCLUDE_NRT_CORE_BLACKBOARD_BLACKBOARDFEDERATIONSUMMARYLISTENER_H
38 
40 
41 namespace nrt
42 {
43  //! Listener that will be triggered on each update of the Blackboard federation
44  /* Typically, a graphical user interface would register a listener so it can update its GUI when new modules are
45  created or deleted, etc.
46 
47  \infgroup blackboard */
49  {
50  public:
51  //! Constructor
52  /*! After construction, the listener needs to be activated by calling activate(). This is not done during
53  construction as objects that derive from BlackboardFederationSummaryListener and overload update() will not be
54  fully constructed yet by the time the base class constructor is invoked, which would result in a
55  pure virtual function called fatal error. */
57 
58  //! Activate the listener (start listening)
59  /*! update() may be called immediately upon activation. */
60  void activate();
61 
62  //! De-activate the listener (stop listening)
63  void deactivate();
64 
65  //! Virtual destructor for safe inheritance
66  /*! Upon destruction, the listener will automatically un-register itself with the Blackboard federation and stop
67  listening */
69 
70  //! Callback function called each time a new BlackboardFederationSummary is available
71  /*! Derived classes must overload this function and take the desired action upon BFS update. */
72  virtual void update(std::shared_ptr<nrt::blackboard::BlackboardFederationSummary const> s) = 0;
73 
74  private:
75  bool activated;
76  };
77 
78 }
79 
80 #endif // INCLUDE_NRT_CORE_BLACKBOARD_BLACKBOARDFEDERATIONSUMMARYLISTENER_H
81