pluginHandler.h

Go to the documentation of this file.
00001 #ifndef BALL_PLUGIN_PLUGINHANDLER_H
00002 #define BALL_PLUGIN_PLUGINHANDLER_H
00003 
00004 
00005 #ifndef BALL_COMMON_GLOBAL_H
00006 # include <BALL/COMMON/global.h>
00007 #endif
00008 
00009 #include <list>
00010 #include <QtCore/QReadWriteLock>
00011 
00012 namespace BALL
00013 {
00014   class BALLPlugin;
00015 
00027   class BALL_EXPORT PluginHandler
00028   {
00029     public:
00033       virtual ~PluginHandler();
00034 
00043       virtual bool canHandle(BALLPlugin* plugin) const = 0;
00044 
00055       bool startPlugin(BALLPlugin* plugin);
00056 
00064       bool stopPlugin(BALLPlugin* plugin);
00065 
00072       virtual bool isRunning(BALLPlugin* plugin) const;
00073 
00074     protected:
00084       virtual bool specificSetup_(BALLPlugin* plugin) = 0;
00085 
00095       virtual bool specificShutdown_(BALLPlugin* plugin) = 0;
00096 
00097     private:
00098       mutable QReadWriteLock mutex_;
00099       std::list<BALLPlugin*> running_plugins_;
00100   };
00101 }
00102 
00103 #endif //BALL_PLUGIN_PLUGINHANDLER_H
00104