00001
00002
00003
00004
00005
00006
00008 #include "JobControl/test/JobCDemoModuleA.h"
00009 #include "MessageService/MsgService.h"
00010 #include "JobControl/JobCommand.h"
00011 #include "JobControl/JobCEnv.h"
00012 #include "JobControl/JobCModuleRegistry.h"
00013
00014
00015
00016 CVSID("$Id: JobCDemoModuleA.cxx,v 1.10 2002/07/17 14:09:13 rhatcher Exp $");
00017
00018
00019
00020
00021
00022 JOBMODULE(JobCDemoModuleA,
00023 "DemoA",
00024 "A dummy module used for testing the JobControl package");
00025
00026
00027
00028 JobCDemoModuleA::JobCDemoModuleA() : fNget(0),fNana(0),fNreco(0)
00029 {
00030 MSG("JobC", Msg::kDebug) << "** DemoModuleA::Constructor\n";
00031 }
00032
00033
00034
00035 JobCDemoModuleA::~JobCDemoModuleA()
00036 {
00037 MSG("JobC", Msg::kDebug) << "** DemoModuleA::Destructor\n";
00038 }
00039
00040
00041
00042 const Registry& JobCDemoModuleA::DefaultConfig() const
00043 {
00044
00045
00046
00047 static Registry r;
00048 r.UnLockValues();
00049 r.SetName("DemoA.config");
00050 r.Set("Sweet", 16);
00051 r.Set("Pi", 3.14);
00052 r.Set("OutFile","output.root");
00053 r.LockValues();
00054 return r;
00055 }
00056
00057
00058
00059 void JobCDemoModuleA::Config(const Registry& r)
00060 {
00061
00062
00063
00064 MsgStream& m = MSGSTREAM("JobC",Msg::kInfo);
00065 m << "DemoA::Config()\n";
00066 if (r.KeyExists("Sweet")) {
00067 m << " New value of Sweet = " << r.GetInt("Sweet") << "\n";
00068 }
00069 if (r.KeyExists("Pi")) {
00070 m << " New value of Pi = " << r.GetDouble("Pi") << "\n";
00071 }
00072 if (r.KeyExists("OutFile")) {
00073 m << " New value of OutFile = " << r.GetCharString("OutFile") << "\n";
00074 }
00075 }
00076
00077
00078
00079 void JobCDemoModuleA::BeginJob()
00080 {
00081 MSG("JobC", Msg::kInfo) << "** DemoModuleA::BeginJob()\n";
00082 }
00083
00084
00085
00086 void JobCDemoModuleA::EndJob()
00087 {
00088 MSG("JobC", Msg::kInfo) << "** DemoModuleA::EndJob()\n";
00089 }
00090
00091
00092
00093 void JobCDemoModuleA::BeginFile()
00094 {
00095 MSG("JobC", Msg::kInfo) << "** DemoModuleA::BeginFile()\n";
00096 }
00097
00098
00099
00100 void JobCDemoModuleA::EndFile()
00101 {
00102 MSG("JobC", Msg::kInfo) << "** DemoModuleA::EndFile()\n";
00103 }
00104
00105
00106
00107 void JobCDemoModuleA::BeginRun()
00108 {
00109 MSG("JobC", Msg::kInfo) << "** DemoModuleA::BeginRun()\n";
00110 }
00111
00112
00113
00114 void JobCDemoModuleA::EndRun()
00115 {
00116 MSG("JobC", Msg::kInfo) << "** DemoModuleA::EndRun()\n";
00117 }
00118
00119
00120
00121 JobCResult JobCDemoModuleA::Get(MomNavigator *mom)
00122 {
00123 ++fNget;
00124 MSG("JobC", Msg::kInfo) <<
00125 "** DemoModuleA::Get (" << mom << ") nGet=" << fNget << "\n";
00126
00127
00128 JobCResult r;
00129
00130 if (fNget%5 == 1) {
00131 r.SetBeginFile();
00132 if (fNget>1) r.SetEndFile();
00133 }
00134
00135 if (fNget%10 == 1) {
00136 r.SetBeginRun();
00137 if (fNget>1) r.SetEndRun();
00138 }
00139
00140 if (fNget > 30) {
00141 r.SetEndOfInputStream();
00142 }
00143 return r;
00144 }
00145
00146
00147
00148 JobCResult JobCDemoModuleA::Ana(const MomNavigator *mom)
00149 {
00150 ++fNana;
00151
00152 MSG("JobC", Msg::kInfo)
00153 << "** DemoModuleA(" << this << ")::Ana (" << mom << ")"
00154 << " Ana=" << fNana << "\n";
00155
00156 return JobCResult::kAOK;
00157 }
00158
00159
00160
00161 JobCResult JobCDemoModuleA::Reco(MomNavigator *mom)
00162 {
00163 ++fNreco;
00164 MSG("JobC", Msg::kInfo) <<
00165 "** DemoModuleA(" << this << ")::Reco(" << mom << ") nReco=" <<
00166 fNreco << "\n";
00167 if (fNreco%2 == 0) return JobCResult::kPassed;
00168 return JobCResult::kFailed;
00169 }
00170
00171
00172
00173 void JobCDemoModuleA::HandleCommand(JobCommand* c)
00174 {
00175 MsgStream& m = MSGSTREAM("JobC", Msg::kInfo);
00176
00177 bool ifirst = true;
00178 m << "** DemoModuleA::HandleCommand: ";
00179 while (c->HaveCmd()) {
00180 if (!ifirst) m << "/";
00181 m << c->PopCmd();
00182 ifirst = false;
00183 }
00184 m << " opt={";
00185 ifirst = true;
00186 while (c->HaveOpt()) {
00187 if (!ifirst) m << ",";
00188 m << c->PopOpt();
00189 ifirst = false;
00190 }
00191 m << "}\n";
00192 }
00193
00194
00195
00196 void JobCDemoModuleA::Help()
00197 {
00198 MSG("JobC", Msg::kInfo) << "** DemoModuleA::Help()\n";
00199 }
00200