00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef ROOT_TPacketizerMulti
00013 #define ROOT_TPacketizerMulti
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef ROOT_TVirtualPacketizer
00030 #include "TVirtualPacketizer.h"
00031 #endif
00032
00033
00034 class TIter;
00035 class TList;
00036 class TMap;
00037 class TMessage;
00038 class TProofProgressStatus;
00039 class TSlave;
00040
00041 class TPacketizerMulti : public TVirtualPacketizer {
00042
00043 private:
00044 TList *fPacketizers;
00045 TIter *fPacketizersIter;
00046 TVirtualPacketizer *fCurrent;
00047 TMap *fAssignedPack;
00048
00049 TPacketizerMulti();
00050 TPacketizerMulti(const TPacketizerMulti&);
00051 void operator=(const TPacketizerMulti&);
00052
00053 TVirtualPacketizer *CreatePacketizer(TDSet *dset, TList *wrks, Long64_t first, Long64_t num,
00054 TList *input, TProofProgressStatus *st);
00055
00056 public:
00057 TPacketizerMulti(TDSet *dset, TList *slaves, Long64_t first, Long64_t num,
00058 TList *input, TProofProgressStatus *st);
00059 virtual ~TPacketizerMulti();
00060
00061 TDSetElement *GetNextPacket(TSlave *wrk, TMessage *r);
00062
00063 Int_t GetEstEntriesProcessed(Float_t f, Long64_t &ent, Long64_t &bytes, Long64_t &calls)
00064 { if (fCurrent) return fCurrent->GetEstEntriesProcessed(f,ent,bytes,calls);
00065 return 1; }
00066 Float_t GetCurrentRate(Bool_t &all) { all = kTRUE;
00067 return (fCurrent? fCurrent->GetCurrentRate(all) : 0.); }
00068 void StopProcess(Bool_t abort) { if (fCurrent) fCurrent->StopProcess(abort);
00069 TVirtualPacketizer::StopProcess(abort); }
00070 void MarkBad(TSlave *wrk, TProofProgressStatus *st, TList **missing)
00071 { if (fCurrent) fCurrent->MarkBad(wrk, st, missing); return; }
00072 Int_t AddProcessed(TSlave *wrk, TProofProgressStatus *st, Double_t lat, TList **missing)
00073 { if (fCurrent) return fCurrent->AddProcessed(wrk, st, lat, missing);
00074 return -1; }
00075
00076 Int_t GetActiveWorkers() { if (fCurrent) return fCurrent->GetActiveWorkers(); return 0; }
00077
00078 ClassDef(TPacketizerMulti,0)
00079 };
00080
00081 #endif