Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Related Pages

AnalysisService.h

00001 #ifndef ANALYSISSERVICE_H
00002 #define ANALYSISSERVICE_H
00003 #include <is/isinfo.h>
00004 #include <ipc/object.h>
00005 #include <ipc/server.h>
00006 
00007 #include <string>
00008 #include <boost/utility.hpp>
00009 #include <boost/thread.hpp>
00010 
00011 #include "SctFitter/FitStrategy.h"
00012 #include "AnalysisServiceI.hh"
00013 
00014 namespace SctAnalysis {
00015 class DcsInterface;
00016 class AnalysisWorkerGroup;
00017 
00018 class AnalysisService : public IPCObject, public virtual AnalysisServiceI_T_AnalysisServiceInterface, boost::noncopyable {
00019 public:
00020     virtual ~AnalysisService() {}
00022     void run();
00024     static void testDataCallback(ISCallbackInfo * isc);
00026     static void scanResultCallback(ISCallbackInfo * isc);
00028     void setFitStrategy(const string& name) throw(LogicError);
00030     SctFitter::FitStrategy& getFitStrategy() const throw(LogicError);
00032     static AnalysisService& instance();
00033     
00038     static AnalysisService& initialize(const string& fitStrategyName = "RootFitStrategy");
00039     
00044     virtual void purge(AnalysisServiceIStatus* status) throw();
00049     virtual void analyze(AnalysisServiceIStatus* status, char* testname) throw();
00055     virtual void analyzeModule(AnalysisServiceIStatus* status, char* testname, 
00056                     char* modulename) throw();
00060     virtual char* status(AnalysisServiceIStatus* status) throw();
00062     virtual ilu_ShortInteger busy (AnalysisServiceIStatus *_status);
00064     virtual ilu_ShortInteger queueLength (AnalysisServiceIStatus *_status);
00066     DcsInterface& getDcsInterface();
00067     
00068     static IPCServer& getServer() throw();
00069     
00070 protected:
00072     AnalysisWorkerGroup* workergroup;
00073     DcsInterface* dcsinterface;
00074  private:
00075     boost::recursive_mutex m_status_access ; 
00076     SctFitter::FitStrategy* fitStrategy; 
00077     std::auto_ptr<ISInfoReceiver> infoReceiver;     
00078     static AnalysisService* service;
00079     AnalysisService(const string& fitStrategyName ); 
00080 };
00081 }
00082 
00083 #endif //#ifndef ANALYSISSERVICE_H

Generated on Fri Jan 14 12:47:01 2005 for SCT DAQ/DCS Software - C++ by doxygen 1.3.5