00001 #ifndef EVF_SHMOUTPUTMODULE_REGISTRY_H 00002 #define EVF_SHMOUTPUTMODULE_REGISTRY_H 00003 00004 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00005 #include <string> 00006 #include <map> 00007 #include <vector> 00008 00009 00010 namespace edm{ 00011 class ParameterSet; 00012 class FUShmOutputModule; 00013 } 00014 00015 00016 00017 namespace evf 00018 { 00019 00020 class OutputModule{ 00021 public: 00022 virtual unsigned int getCounts()=0; 00023 }; 00024 class ShmOutputModuleRegistry 00025 { 00026 public: 00027 ShmOutputModuleRegistry(const edm::ParameterSet &); 00028 OutputModule *get(std::string &name); 00029 void registerModule(std::string &name, OutputModule *op); 00030 void dumpRegistry(); 00031 std::vector<edm::FUShmOutputModule *> getShmOutputModules(); 00032 00033 void updateDatasetInfo(); 00034 std::string getDatasetCSV(); 00035 std::vector<edm::FUShmOutputModule *> & getShmOutputModulesWithDatasets() {return shmOutputsWithDatasets_;} 00036 void insertStreamAndDatasetInfo(edm::ParameterSet & streams, edm::ParameterSet & datasets); 00037 00038 private: 00039 typedef std::map<std::string, OutputModule*> dct; 00040 typedef dct::iterator idct; 00041 void clear(); 00042 dct clm_; 00043 std::vector<edm::FUShmOutputModule *> shmOutputsWithDatasets_; 00044 std::vector<std::string> listOfDatasets_; 00045 friend class FWEPWrapper; 00046 }; 00047 } 00048 #endif 00049