00001
00002
00003
00004
00005
00006
00008 #ifndef JOBCGRAPHVTX_H
00009 #define JOBCGRAPHVTX_H
00010 #ifndef VECTOR
00011 #include <vector>
00012 #define VECTOR
00013 #endif
00014 #ifndef ROOT_Rtypes
00015 #if !defined(__CINT__) || defined(__MAKECINT__)
00016 #include "Rtypes.h"
00017 #endif
00018 #endif
00019
00020 using namespace std;
00021
00022 class JobCRecord;
00023
00024 class JobCGraphVtx
00025 {
00026 public:
00027 JobCGraphVtx();
00028 virtual ~JobCGraphVtx() { }
00029
00030 JobCGraphVtx* GetAttached(unsigned int i) const;
00031
00032 virtual bool EvalInput(JobCRecord* rec) = 0;
00033 virtual void Attach(JobCGraphVtx *p);
00034 virtual void Detach(JobCGraphVtx *p);
00035
00036 void EvaluateGraph(JobCRecord* rec);
00037 void EvaluateNode(JobCRecord* rec);
00038
00039 private:
00040 void AddUpStream();
00041 void ReceiveNotification(bool passfail);
00042 void SendNotification(bool passfail);
00043 void InitGraphEvaluate();
00044 virtual void DerivedInitGraphEvaluate() { }
00045
00046 int fNupStream;
00047 int fNupStreamPassed;
00048 int fNupStreamFailed;
00049 vector<JobCGraphVtx*> fDownStream;
00050
00051 ClassDef(JobCGraphVtx,0)
00052 };
00053 #endif // JOBCGRAPHVTX_H