CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_6_2_5/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   namespace moduleweb {
00026     class ForkInfoObj;
00027   }
00028   class ModuleWeb;
00029   class ModuleWebRegistry
00030   {
00031     public:
00032       ModuleWebRegistry(const edm::ParameterSet &);
00033 
00034       void registerWeb(std::string &name, ModuleWeb *cl)
00035         {
00036           clm_.insert(std::pair<std::string, ModuleWeb*>(name,cl));
00037           // CAN ONLY BIND TO xdaq::Application methods...
00038           //      xgi::bind(cl, func, name);  
00039         } 
00040       void invoke(xgi::Input *, xgi::Output *, const std::string &);
00041       void publish(xdata::InfoSpace *);
00042       void publishToXmas(xdata::InfoSpace *);
00043       bool checkWeb(const std::string &);
00044       void publishForkInfo(std::string name, moduleweb::ForkInfoObj *forkInfoObj);
00045 
00046     private:
00047       typedef std::map<std::string, ModuleWeb*> dct;
00048       typedef dct::iterator idct;
00049       void openBackDoor(const std::string &, unsigned int timeout_sec = 0, bool * started = 0);
00050       void closeBackDoor(const std::string &);
00051       void clear();
00052       dct clm_;
00053       friend class FWEPWrapper;
00054     };
00055 }
00056 #endif
00057