00001
00002
00019 #pragma once
00020
00021 #include "../pch.h"
00022 #include <boost/program_options.hpp>
00023 #include <list>
00024
00025 namespace mongo {
00026
00033 class Module {
00034 public:
00035 Module( const string& name );
00036 virtual ~Module();
00037
00038 boost::program_options::options_description_easy_init add_options() {
00039 return _options.add_options();
00040 }
00041
00045 virtual void config( program_options::variables_map& params ) = 0;
00046
00050 virtual void init() = 0;
00051
00055 virtual void shutdown() = 0;
00056
00057 const string& getName() { return _name; }
00058
00059
00060
00061 static void addOptions( program_options::options_description& options );
00062 static void configAll( program_options::variables_map& params );
00063 static void initAll();
00064
00065 private:
00066 static std::list<Module*> * _all;
00067 string _name;
00068 program_options::options_description _options;
00069 };
00070 }