MIRA
AbstractAuthority.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_ABSTRACTAUTHORITY_H_
48 #define _MIRA_ABSTRACTAUTHORITY_H_
49 
50 #include <set>
51 
52 #ifndef Q_MOC_RUN
53 #include <boost/noncopyable.hpp>
54 #endif
55 
57 #include <fw/Status.h>
58 
59 namespace mira {
60 
62 
63 // forward declaration
64 class PropertyNode;
65 // forward declaration
67 
68 
76 class MIRA_FRAMEWORK_EXPORT AbstractAuthority : boost::noncopyable
77 {
78 public:
79 
80  virtual ~AbstractAuthority() {}
81 
87 
92  std::string getNamespace() const {
93  return mDescription.ns;
94  }
95 
103  std::string getGlobalName() const {
104  return mDescription.getGlobalName();
105  }
106 
111  std::string getGlobalID() const {
112  return mDescription.getGlobalID();
113  }
114 
119  std::string getID() const {
120  return mDescription.id;
121  }
122 
127  std::string getName() const {
128  return mDescription.name;
129  }
130 
134  const AuthorityDescription& getDescription() const { return mDescription; }
135 
137 
138 public:
139  typedef std::multimap<std::string, std::string> ChannelNameMapping;
140 
141  typedef std::map<std::string, Status> ChannelStatusMap;
142 
147  virtual StatusManager::StatusMap getStatusMap() = 0;
148 
150  virtual boost::shared_ptr<PropertyNode> getProperties() = 0;
151 
153  virtual std::set<std::string> getPublishedChannels() = 0;
154 
156  virtual std::set<std::string> getSubscribedChannels() = 0;
157 
159  virtual std::set<std::string> getServiceInterfaces() = 0;
160 
165  virtual ChannelNameMapping getPublishedChannelNames() = 0;
166 
171  virtual ChannelNameMapping getSubscribedChannelNames() = 0;
172 
177  virtual ChannelStatusMap getSubscribedChannelStatus() = 0;
178 
179 public:
180 
182  virtual void start() = 0;
183 
185  virtual void stop() = 0;
186 
193  virtual bool hasUnrecoverableFailure() const = 0;
194 
199  virtual bool isStarted() const = 0;
200 
202  virtual bool isRunning() const = 0;
203 
204 protected:
205 
207 };
208 
210 
211 }
212 
213 #endif
Manages the status of one or multiple modules inheriting from DiagnosticsModule.
Definition: Status.h:291
std::string getID() const
Return the id of the authority.
Definition: AbstractAuthority.h:119
Descriptive informations about an authority.
specialize cv::DataType for our ImgPixel and inherit from cv::DataType<Vec>
Definition: IOService.h:67
std::multimap< std::string, Status > StatusMap
Definition: Status.h:295
std::map< std::string, Status > ChannelStatusMap
Definition: AbstractAuthority.h:141
virtual ~AbstractAuthority()
Definition: AbstractAuthority.h:80
This is the descriptive part of an authority.
Definition: AuthorityDescription.h:61
std::string getGlobalID() const
Return the fully qualified global id (includes namespace)
Definition: AbstractAuthority.h:111
std::string getName() const
Return the name of the authority.
Definition: AbstractAuthority.h:127
#define MIRA_FRAMEWORK_EXPORT
Definition: FrameworkExports.h:61
std::string getNamespace() const
Return the resolved namespace of the authority.
Definition: AbstractAuthority.h:92
std::string getGlobalName() const
Return the fully qualified global name (includes namespace) This method returns the name without the ...
Definition: AbstractAuthority.h:103
const AuthorityDescription & getDescription() const
Return the description of this authority.
Definition: AbstractAuthority.h:134
This is the abstract base class of local and remote authority classes.
Definition: AbstractAuthority.h:76
AuthorityDescription mDescription
Definition: AbstractAuthority.h:206
std::multimap< std::string, std::string > ChannelNameMapping
Definition: AbstractAuthority.h:139
Status and status management classes used for diagnostics.