00001
00002
00003
00004
00006 #include "JobControl/Stack.h"
00007 #include <iostream>
00008 #include "JobControl/Job.h"
00009 using namespace jobc;
00010
00011 Stack* Stack::fInstance = 0;
00012
00013 Stack& Stack::Instance()
00014 {
00015 if (fInstance==0) fInstance = new Stack();
00016 return *fInstance;
00017 }
00018
00019
00020
00021 void Stack::PrintAll()
00022 {
00023 std::list<Job*>::iterator itr(fJobStack.begin());
00024 std::list<Job*>::iterator itrEnd(fJobStack.end());
00025 for (; itr!=itrEnd; ++itr) {
00026 (*itr)->Print();
00027 }
00028 }
00029
00030
00031
00032 void Stack::CleanUp()
00033 {
00034 std::list<Job*>::iterator itr(fJobStack.begin());
00035 std::list<Job*>::iterator itrEnd(fJobStack.end());
00036 for (; itr!=itrEnd; ++itr) {
00037 if (*itr) delete *itr;
00038 }
00039 }
00040
00041
00042
00043 void Stack::Exec(edm::EventHandle& e)
00044 {
00045 std::list<Job*>::iterator itr(fJobStack.begin());
00046 std::list<Job*>::iterator itrEnd(fJobStack.end());
00047 for (; itr!=itrEnd; ++itr) {
00048 if (*itr) {
00049 (*itr)->CheckStatus(std::string(""),&e);
00050 (*itr)->Exec(e);
00051 }
00052 }
00053 }
00054
00055
00056
00057 void Stack::AdoptJob(Job* j) { fJobStack.push_back(j); }
00058
00059
00060
00061 void Stack::Run()
00062 {
00063 std::list<Job*>::iterator itr(fJobStack.begin());
00064 std::list<Job*>::iterator itrEnd(fJobStack.end());
00065 for (; itr!=itrEnd; ++itr) {
00066 (*itr)->Run(-1);
00067 }
00068 }
00069
00070
00071
00072 void Stack::RunOne()
00073 {
00074 std::list<Job*>::iterator itr(fJobStack.begin());
00075 std::list<Job*>::iterator itrEnd(fJobStack.end());
00076 for (; itr!=itrEnd; ++itr) (*itr)->Run(0);
00077 }
00078