MIRA
AbstractChannelSubscriber.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2012 by
3  * MetraLabs GmbH (MLAB), GERMANY
4  * and
5  * Neuroinformatics and Cognitive Robotics Labs (NICR) at TU Ilmenau, GERMANY
6  * All rights reserved.
7  *
8  * Contact: info@mira-project.org
9  *
10  * Commercial Usage:
11  * Licensees holding valid commercial licenses may use this file in
12  * accordance with the commercial license agreement provided with the
13  * software or, alternatively, in accordance with the terms contained in
14  * a written agreement between you and MLAB or NICR.
15  *
16  * GNU General Public License Usage:
17  * Alternatively, this file may be used under the terms of the GNU
18  * General Public License version 3.0 as published by the Free Software
19  * Foundation and appearing in the file LICENSE.GPL3 included in the
20  * packaging of this file. Please review the following information to
21  * ensure the GNU General Public License version 3.0 requirements will be
22  * met: http://www.gnu.org/copyleft/gpl.html.
23  * Alternatively you may (at your option) use any later version of the GNU
24  * General Public License if such license has been publicly approved by
25  * MLAB and NICR (or its successors, if any).
26  *
27  * IN NO EVENT SHALL "MLAB" OR "NICR" BE LIABLE TO ANY PARTY FOR DIRECT,
28  * INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF
29  * THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF "MLAB" OR
30  * "NICR" HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  *
32  * "MLAB" AND "NICR" SPECIFICALLY DISCLAIM ANY WARRANTIES, INCLUDING,
33  * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
34  * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
35  * ON AN "AS IS" BASIS, AND "MLAB" AND "NICR" HAVE NO OBLIGATION TO
36  * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS OR MODIFICATIONS.
37  */
38 
47 #ifndef _MIRA_ABSTRACTCHANNELSUBSCRIBER_H_
48 #define _MIRA_ABSTRACTCHANNELSUBSCRIBER_H_
49 
50 #ifndef Q_MOC_RUN
51 #include <boost/shared_ptr.hpp>
52 #endif
53 
54 #include <fw/Runnable.h>
55 
56 namespace mira {
57 
59 
60 // forward declaration
61 class AbstractChannel;
62 
71 {
72 public:
73 
78  DiagnosticRunnable(diagnosticsModule),
79  mDispatcher(dispatcher), mEnabled(true) {}
80 
82 
86  virtual void signal();
87 
88  virtual void unsignal();
89 
94  void enable(bool enabled) { mEnabled = enabled; }
95 
99  bool isEnabled() const { return mEnabled; }
100 
104  virtual AbstractChannel* getChannel() = 0;
105 
110  virtual void detachChannel() = 0;
111 
113 
114 protected:
115 
117  bool mEnabled;
118 };
119 
120 typedef boost::shared_ptr<AbstractChannelSubscriber> AbstractChannelSubscriberPtr;
121 
123 
124 }
125 
126 #endif
virtual ~AbstractChannelSubscriber()
Definition: AbstractChannelSubscriber.h:81
TODO Add description.
bool isEnabled() const
Returns if this subscriber is enabled.
Definition: AbstractChannelSubscriber.h:99
specialize cv::DataType for our ImgPixel and inherit from cv::DataType<Vec>
Definition: IOService.h:67
AbstractChannelSubscriber(DispatcherThread *dispatcher, DiagnosticsModulePtr diagnosticsModule)
Constructs a subscriber and enables it by default.
Definition: AbstractChannelSubscriber.h:77
virtual AbstractChannel * getChannel()=0
Returns the channel we are subscribed on, or NULL otherwise.
virtual void signal()
Is called from the subscribed Channel whenever data changes.
void enable(bool enabled)
Enable or disable the subscriber.
Definition: AbstractChannelSubscriber.h:94
DispatcherThread * mDispatcher
Definition: AbstractChannelSubscriber.h:116
Definition: AbstractChannel.h:70
bool mEnabled
Is the subscriber enabled.
Definition: AbstractChannelSubscriber.h:117
Definition: Runnable.h:91
Class that can be used whenever you want to have ONE thread where several handlers are assigned to...
Definition: DispatcherThread.h:130
boost::shared_ptr< AbstractChannelSubscriber > AbstractChannelSubscriberPtr
Definition: AbstractChannelSubscriber.h:120
DispatcherThread * getDispatcher()
Definition: AbstractChannelSubscriber.h:112
Definition: AbstractChannelSubscriber.h:70
Base class for modules that want to use diagnostics and set the current status.
Definition: Status.h:136
virtual void detachChannel()=0
Is called by AbstractChannel::removeSubscriber() when the subscriber detaches from the channel it is ...