00001 #ifndef QPID_PLUGIN_H
00002 #define QPID_PLUGIN_H
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #include "qpid/shared_ptr.h"
00025 #include <boost/noncopyable.hpp>
00026 #include <vector>
00027 #include <boost/function.hpp>
00028
00029
00032 namespace qpid {
00033 class Options;
00034
00038 class Plugin : boost::noncopyable
00039 {
00040 public:
00047 struct Target { virtual ~Target() {} };
00048
00049 typedef std::vector<Plugin*> Plugins;
00050
00058 Plugin();
00059
00060 virtual ~Plugin();
00061
00069 virtual Options* getOptions();
00070
00077 virtual void earlyInitialize(Target&) = 0;
00078
00085 virtual void initialize(Target&) = 0;
00086
00090 static const Plugins& getPlugins();
00091
00092 private:
00093 static Plugins plugins;
00094 };
00095
00096 }
00097
00098 #endif