00001 #ifndef EVF_SERVICE_WEB_REGISTRY_H
00002 #define EVF_SERVICE_WEB_REGISTRY_H
00003
00004 #include <string>
00005 #include <map>
00006 #include <vector>
00007 #include <iostream>
00008 #include "xgi/Method.h"
00009 #include "xdata/InfoSpace.h"
00010
00011 namespace edm{
00012 class ParameterSet;
00013 }
00014
00015 namespace xgi{
00016 class Input;
00017 class Output;
00018 }
00019
00020 namespace xdaq{
00021 class Application;
00022 }
00023
00024 namespace evf
00025 {
00026 class ServiceWeb;
00027 class ServiceWebRegistry
00028 {
00029 public:
00030 ServiceWebRegistry(const edm::ParameterSet &);
00031
00032 void registerWeb(std::string &name, ServiceWeb *cl)
00033 {
00034 std::cout << "**********registering " << name << " to service web registry "
00035 << std::hex << (unsigned int) this << std::dec << std::endl;
00036 clm_.insert(std::pair<std::string, ServiceWeb*>(name,cl));
00037 std::cout << "**********registry size now " << clm_.size() << std::endl;
00038
00039
00040 }
00041 void invoke(xgi::Input *, xgi::Output *, const std::string &);
00042 void publish(xdata::InfoSpace *);
00043 std::vector<ServiceWeb *> getWebs();
00044
00045 private:
00046 typedef std::map<std::string, ServiceWeb*> dct;
00047 typedef dct::iterator idct;
00048 void clear();
00049 dct clm_;
00050 friend class FUEventProcessor;
00051 };
00052 }
00053 #endif
00054