CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_1_8_patch13/src/EventFilter/Utilities/interface/ModuleWebRegistry.h

Go to the documentation of this file.
00001 #ifndef EVF_MODULE_WEB_REGISTRY_H
00002 #define EVF_MODULE_WEB_REGISTRY_H
00003 
00004 #include <string>
00005 #include <map>
00006 #include <list>
00007 #include "xgi/Method.h"
00008 #include "xdata/InfoSpace.h"
00009 
00010 namespace edm{
00011   class ParameterSet;
00012 }
00013 
00014 namespace xgi{
00015   class Input;
00016   class Output;
00017 }
00018 
00019 namespace xdaq{
00020   class Application;
00021 }
00022 
00023 namespace evf
00024 {
00025   class ModuleWeb;
00026   class ModuleWebRegistry
00027     {
00028     public:
00029       ModuleWebRegistry(const edm::ParameterSet &);
00030 
00031       void registerWeb(std::string &name, ModuleWeb *cl)
00032         {
00033           clm_.insert(std::pair<std::string, ModuleWeb*>(name,cl));
00034           // CAN ONLY BIND TO xdaq::Application methods...
00035           //      xgi::bind(cl, func, name);  
00036         } 
00037       void invoke(xgi::Input *, xgi::Output *, const std::string &);
00038       void publish(xdata::InfoSpace *);
00039       void publishToXmas(xdata::InfoSpace *);
00040       bool checkWeb(const std::string &);
00041 
00042     private:
00043       typedef std::map<std::string, ModuleWeb*> dct;
00044       typedef dct::iterator idct;
00045       void openBackDoor(const std::string &, unsigned int timeout_sec = 0);
00046       void closeBackDoor(const std::string &);
00047       void clear();
00048       dct clm_;
00049       friend class FWEPWrapper;
00050     };
00051 }
00052 #endif
00053