AnalysisService.h

00001 #ifndef ANALYSISSERVICE_H
00002 #define ANALYSISSERVICE_H
00003 #include <is/info.h>
00004 #include <is/inforeceiver.h>
00005 #include <ipc/object.h>
00006 #include <ipc/server.h>
00007 
00008 #include <string>
00009 #include <boost/utility.hpp>
00010 #include <boost/thread.hpp>
00011 
00012 #include "SctFitter/FitStrategy.h"
00013 #include "AnalysisServiceInterface.hh"
00014 #include "AnalysisArguments.h"
00015 
00016 namespace SctConfiguration{
00017 class Configuration;
00018 }
00019 namespace SctAnalysis {
00020 class DcsInterface;
00021 class AnalysisWorkerGroup;
00022 
00023 class AnalysisService : 
00024   public IPCNamedObject<POA_AnalysisServiceI::AnalysisServiceInterface>,
00025   private boost::noncopyable 
00026   {
00027 private:
00028     void shutdown();
00029  public:
00030     virtual ~AnalysisService();
00034     void run();
00038     static void generalCallback(ISCallbackInfo* isc);
00042     static void testDataCallback(ISCallbackInfo * isc);
00046     static void scanResultCallback(ISCallbackInfo * isc);
00050     void setFitStrategy(const string& name) throw(LogicError);
00054     SctFitter::FitStrategy& getFitStrategy() const throw(LogicError);
00058     static AnalysisService& instance();
00059     
00064     static AnalysisService& initialize(AnalysisArguments args);
00069     virtual void purge() throw();
00074     virtual void analyze(const char* testname) throw();
00080     virtual void analyzeModule(const char* testname, 
00081                    const char* modulename) throw();
00085     virtual char* status() throw();
00089     virtual CORBA::Short busy ();
00093     virtual CORBA::Short queueLength ();
00097     DcsInterface& getDcsInterface();
00101     const std::string getOutputISServerName();
00105     void recover();
00106 
00110     void setFifo(bool);
00114     bool isFifo();
00115 
00116     static IPCServer& getServer() throw();
00117     
00122     boost::shared_ptr<SctConfiguration::Configuration> getConfiguration();
00126     AnalysisServiceI::StringList* listAlgorithms();
00127 protected:
00131     AnalysisWorkerGroup* workergroup;
00132     DcsInterface* dcsinterface;
00133 private:
00134     boost::recursive_mutex m_status_access ; 
00135     SctFitter::FitStrategy* fitStrategy; 
00136     std::auto_ptr<ISInfoReceiver> infoReceiver;     
00137     static AnalysisService* service;
00138     AnalysisService(AnalysisArguments args); 
00139     AnalysisArguments m_args;
00140     boost::shared_ptr<SctConfiguration::Configuration> s_configuration; 
00141 };
00142 }
00143 
00144 #endif //#ifndef ANALYSISSERVICE_H

Generated on Mon Feb 6 14:01:16 2006 for SCT DAQ/DCS Software - C++ by  doxygen 1.4.6