Fawkes API  Fawkes Development Version
manager.h
1 
2 /***************************************************************************
3  * manager.h - Fawkes Aspect Manager
4  *
5  * Created: Thu Nov 25 00:27:42 2010 (based on inifin.h)
6  * Copyright 2006-2010 Tim Niemueller [www.niemueller.de]
7  *
8  ****************************************************************************/
9 
10 /* This program is free software; you can redistribute it and/or modify
11  * it under the terms of the GNU General Public License as published by
12  * the Free Software Foundation; either version 2 of the License, or
13  * (at your option) any later version. A runtime exception applies to
14  * this software (see LICENSE.GPL_WRE file mentioned below for details).
15  *
16  * This program is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19  * GNU Library General Public License for more details.
20  *
21  * Read the full text in the LICENSE.GPL_WRE file in the doc directory.
22  */
23 
24 #ifndef _ASPECT_MANAGER_H_
25 #define _ASPECT_MANAGER_H_
26 
27 #include <core/threading/thread_finalizer.h>
28 #include <core/threading/thread_initializer.h>
29 
30 #include <list>
31 #include <map>
32 #include <string>
33 
34 namespace fawkes {
35 
36 class BlackBoard;
37 class Configuration;
38 class Logger;
39 class Clock;
40 class FawkesNetworkHub;
41 class PluginManager;
42 class Thread;
43 class ThreadCollector;
44 class NetworkNameResolver;
45 class ServicePublisher;
46 class ServiceBrowser;
47 class LoggerEmployer;
48 class BlockedTimingExecutor;
49 class MainLoopEmployer;
50 class AspectIniFin;
51 class SyncPointManager;
52 
53 namespace tf {
54 class Transformer;
55 }
56 
58 {
59 public:
60  virtual ~AspectManager();
61 
62  virtual void init(Thread *thread);
63  virtual void finalize(Thread *thread);
64  virtual bool prepare_finalize(Thread *thread);
65 
66  void register_inifin(AspectIniFin *inifin);
67  void unregister_inifin(AspectIniFin *inifin);
68 
69  bool has_threads_for_aspect(const char *aspect_name);
70 
71  void register_default_inifins(BlackBoard * blackboard,
72  ThreadCollector * collector,
73  Configuration * config,
74  Logger * logger,
75  Clock * clock,
76  FawkesNetworkHub * fnethub,
77  MainLoopEmployer * mloop_employer,
78  LoggerEmployer * logger_employer,
79  BlockedTimingExecutor *btexec,
80  NetworkNameResolver * nnresolver,
81  ServicePublisher * service_publisher,
82  ServiceBrowser * service_browser,
83  PluginManager * pmanager,
84  tf::Transformer * tf_listener,
85  SyncPointManager * syncpoint_manager);
86 
87 private:
88  std::map<std::string, AspectIniFin *> inifins_;
89  std::map<std::string, AspectIniFin *> default_inifins_;
90  std::map<std::string, std::list<Thread *>> threads_;
91 };
92 
93 } // end namespace fawkes
94 
95 #endif
fawkes::ThreadCollector
Thread collector.
Definition: thread_collector.h:34
fawkes::PluginManager
Fawkes Plugin Manager.
Definition: manager.h:48
fawkes::SyncPointManager
This class gives access to SyncPoints.
Definition: syncpoint_manager.h:38
fawkes::NetworkNameResolver
Network name and address resolver.
Definition: resolver.h:45
fawkes::ServiceBrowser
Service browser.
Definition: service_browser.h:33
fawkes::BlockedTimingExecutor
Blocked timing executor.
Definition: executor.h:37
fawkes::tf::Transformer
Coordinate transforms between any two frames in a system.
Definition: transformer.h:65
fawkes::BlackBoard
The BlackBoard abstract class.
Definition: blackboard.h:46
fawkes::Configuration
Interface for configuration handling.
Definition: config.h:65
fawkes::AspectManager::init
virtual void init(Thread *thread)
This method is called by the ThreadManager for each newly added Thread.
Definition: manager.cpp:115
fawkes::AspectIniFin
Aspect initializer/finalizer base class.
Definition: inifin.h:34
fawkes::AspectManager::finalize
virtual void finalize(Thread *thread)
Finalize a thread.
Definition: manager.cpp:158
fawkes::Logger
Interface for logging.
Definition: logger.h:42
fawkes
Fawkes library namespace.
fawkes::ServicePublisher
Service publisher interface.
Definition: service_publisher.h:32
fawkes::ThreadFinalizer
Thread finalizer interface.
Definition: thread_finalizer.h:41
fawkes::AspectManager::~AspectManager
virtual ~AspectManager()
Constructor.
Definition: manager.cpp:64
fawkes::Thread
Thread class encapsulation of pthreads.
Definition: thread.h:46
fawkes::AspectManager::register_inifin
void register_inifin(AspectIniFin *inifin)
Register initializer/finalizer.
Definition: manager.cpp:77
fawkes::MainLoopEmployer
Main loop employer The MainLoopEmployer calls the main loop for execution.
Definition: employer.h:32
fawkes::LoggerEmployer
Logger employer The LoggerEmployer shall pipe all log messages of the system to added loggers.
Definition: logger_employer.h:37
fawkes::AspectManager
Aspect and aspect initializer/finalizer manager.
Definition: manager.h:58
fawkes::FawkesNetworkHub
Fawkes Network Hub.
Definition: hub.h:34
fawkes::ThreadInitializer
Thread initializer interface.
Definition: thread_initializer.h:42
fawkes::AspectManager::has_threads_for_aspect
bool has_threads_for_aspect(const char *aspect_name)
Check if threads for a particular aspect still exist.
Definition: manager.cpp:109
fawkes::AspectManager::unregister_inifin
void unregister_inifin(AspectIniFin *inifin)
Unregister initializer/finalizer.
Definition: manager.cpp:89
fawkes::Clock
This is supposed to be the central clock in Fawkes.
Definition: clock.h:35
fawkes::AspectManager::register_default_inifins
void register_default_inifins(BlackBoard *blackboard, ThreadCollector *collector, Configuration *config, Logger *logger, Clock *clock, FawkesNetworkHub *fnethub, MainLoopEmployer *mloop_employer, LoggerEmployer *logger_employer, BlockedTimingExecutor *btexec, NetworkNameResolver *nnresolver, ServicePublisher *service_publisher, ServiceBrowser *service_browser, PluginManager *pmanager, tf::Transformer *tf_listener, SyncPointManager *syncpoint_manager)
Register default aspect initializer/finalizer.
Definition: manager.cpp:227
fawkes::AspectManager::prepare_finalize
virtual bool prepare_finalize(Thread *thread)
Prepare finalization of a thread.
Definition: manager.cpp:184