Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #include "TGo4ComSetAnalysisStatus.h"
00015
00016 #include "TGo4Log.h"
00017 #include "TGo4AnalysisClientImp.h"
00018 #include "TGo4RuntimeException.h"
00019 #include "TGo4AnalysisImp.h"
00020 #include "TGo4AnalysisClientImp.h"
00021 #include "TGo4RemoteCommand.h"
00022
00023 TGo4ComSetAnalysisStatus::TGo4ComSetAnalysisStatus(TGo4AnalysisStatus* settings)
00024 :TGo4AnalysisCommand("ANSetStatus","Set Analysis to given Status ")
00025 {
00026 GO4TRACE((12,"TGo4ComSetAnalysisStatus::TGo4ComSetAnalysisStatus() ctor",__LINE__, __FILE__));
00027 SetReceiverName("AnalysisClient");
00028
00029 fxAnalysisStatus=settings;
00030 SetProtection(kGo4ComModeController);
00031
00032 }
00033
00034 TGo4ComSetAnalysisStatus::TGo4ComSetAnalysisStatus()
00035 :TGo4AnalysisCommand("ANSetStatus","Set Analysis to given Status ")
00036 {
00037 GO4TRACE((12,"TGo4ComSetAnalysisStatus::TGo4ComSetAnalysisStatus() ctor",__LINE__, __FILE__));
00038 SetReceiverName("AnalysisClient");
00039
00040 fxAnalysisStatus=0;
00041 SetProtection(kGo4ComModeController);
00042
00043 }
00044
00045 TGo4ComSetAnalysisStatus::~TGo4ComSetAnalysisStatus()
00046 {
00047 GO4TRACE((12,"TGo4ComSetAnalysisStatus::~TGo4ComSetAnalysisStatus() dtor",__LINE__, __FILE__));
00048 delete fxAnalysisStatus;
00049 }
00050
00051 void TGo4ComSetAnalysisStatus::SetStatusObject(TGo4AnalysisStatus* settings)
00052 {
00053 fxAnalysisStatus=settings;
00054 }
00055
00056 void TGo4ComSetAnalysisStatus::Set(TGo4RemoteCommand* remcom)
00057 {
00058 if(remcom==0) return;
00059 TGo4AnalysisStatus* stat=dynamic_cast<TGo4AnalysisStatus* >(remcom->GetAggregate());
00060
00061 if(stat)
00062 {
00063 delete fxAnalysisStatus;
00064 fxAnalysisStatus=stat;
00065 }
00066 }
00067
00068
00069 Int_t TGo4ComSetAnalysisStatus::ExeCom()
00070 {
00071 GO4TRACE((12,"TGo4ComSetAnalysisStatus::ExeCom()",__LINE__, __FILE__));
00072
00073 TGo4AnalysisClient* cli=dynamic_cast<TGo4AnalysisClient*> (fxReceiverBase);
00074 if (cli!=0)
00075 {
00076 GO4TRACE((11,"TGo4ComSetAnalysisStatus::ExeCom() - found valid receiver",__LINE__, __FILE__));
00077
00078 TGo4Analysis* ana= TGo4Analysis::Instance();
00079 if(ana)
00080 {
00081 if(cli->MainIsRunning()) ana->PostLoop();
00082
00083 ana->SetStatus(fxAnalysisStatus);
00084 cli->SendStatusMessage(1, kFALSE,"New analysis status was set.");
00085 }
00086 else
00087 {
00088 cli->SendStatusMessage(3, kTRUE, TString::Format(
00089 "%s ERROR no analysis", GetName()));
00090 }
00091 }
00092 else
00093 {
00094 GO4TRACE((11,"TGo4ComSetAnalysisStatus::ExeCom() - no receiver specified ERROR!",__LINE__, __FILE__));
00095 TGo4Log::Debug(" !!! ''%s'': NO RECEIVER ERROR!!!",GetName());
00096 throw TGo4RuntimeException();
00097 return 1;
00098 }
00099
00100 return -1;
00101 }