00001 #include "AnalysisService.h" 00002 #include <pmg/pmg_initSync.h> 00003 00004 #include "Sct/IpcObjectException.h" 00005 #include "Sct/ApplicationStartupDebugTools.h" 00006 00007 #include <ipc/core.h> 00008 #include <boost/scoped_ptr.hpp> 00009 00010 using boost::scoped_ptr; 00011 00012 int main(int argc, char** argv) { 00013 using namespace SctAnalysis; 00014 setExceptionHandlers(argv[0]); 00015 00016 IPCCore::init(argc,argv); 00017 Sct::ApplicationStartupDebugTools::announceStartOfMain(argc, argv, __FILE__, __LINE__); 00018 00019 AnalysisArguments args(argc, argv); 00020 args.print(std::cout); 00021 AnalysisService& s=AnalysisService::initialize(args); 00022 00023 try { 00024 if (!s.publish()) { 00025 IpcObjectException e("Failed to publish Analysis Service", __FILE__, __LINE__); 00026 e.sendToMrs(MRS_ERROR); 00027 } 00028 00029 pmg_initSync(); 00030 s.run(); 00031 s.getServer().run(); 00032 s.withdraw(); 00033 } catch (Throwable& e) { 00034 e.sendToMrs(MRS_FATAL); 00035 std::terminate(); 00036 } 00037 }