12 #ifndef ROOT_TVirtualPacketizer
13 #define ROOT_TVirtualPacketizer
49 class TProofProgressInfo;
53 class TVirtualPacketizer :
public TObject {
56 class TVirtualSlaveStat;
66 Double_t fMinPacketTime;
67 Double_t fMaxPacketTime;
72 TProofProgressStatus *fProgressStatus;
75 Long64_t fTotalEntries;
77 TList *fFailedPackets;
88 TNtuple *fProgressPerf;
89 Float_t fProcTimeLast;
95 Float_t fReportPeriod;
97 EUseEstOpt fUseEstOpt;
106 TVirtualPacketizer(TList *input, TProofProgressStatus *st = 0);
107 TVirtualPacketizer(
const TVirtualPacketizer &);
108 void operator=(
const TVirtualPacketizer &);
110 TDSetElement *CreateNewPacket(TDSetElement* base, Long64_t first, Long64_t num);
111 Long64_t GetEntries(Bool_t tree, TDSetElement *e);
112 virtual Bool_t HandleTimer(TTimer *timer);
115 enum EStatusBits { kIsInitializing = BIT(16), kIsDone = BIT(17), kIsTree = BIT(18) };
116 virtual ~TVirtualPacketizer();
118 virtual Int_t AssignWork(TDSet* , Long64_t , Long64_t ) {
return -1; }
119 Bool_t IsValid()
const {
return fValid; }
120 Long64_t GetEntriesProcessed()
const {
return (fProgressStatus? fProgressStatus->GetEntries() : 0); }
121 virtual Int_t GetEstEntriesProcessed(Float_t, Long64_t &ent, Long64_t &bytes, Long64_t &calls)
122 { ent = GetEntriesProcessed(); bytes = GetBytesRead(); calls = GetReadCalls();
return 0; }
123 virtual Float_t GetCurrentRate(Bool_t &all) { all = kTRUE;
return (fProgressStatus? fProgressStatus->GetCurrentRate() : 0.); }
124 Long64_t GetTotalEntries()
const {
return fTotalEntries; }
125 virtual TDSetElement *GetNextPacket(TSlave *sl, TMessage *r);
126 virtual void SetInitTime();
127 virtual void StopProcess(Bool_t abort, Bool_t stoptimer = kFALSE);
128 TList *GetFailedPackets() {
return fFailedPackets; }
129 void SetFailedPackets(TList *list) { fFailedPackets = list; }
130 virtual Int_t AddWorkers(TList *workers);
132 Long64_t GetBytesRead()
const {
return (fProgressStatus? fProgressStatus->GetBytesRead() : 0); }
133 Long64_t GetReadCalls()
const {
return (fProgressStatus? fProgressStatus->GetReadCalls() : 0); }
134 Double_t GetCumProcTime()
const {
return fProgressStatus->GetProcTime(); }
135 Float_t GetInitTime()
const {
return fInitTime; }
136 Float_t GetProcTime()
const {
return fProcTime; }
137 TNtuple *GetProgressPerf(Bool_t steal = kFALSE) {
if (steal) { TNtuple *n = fProgressPerf; fProgressPerf = 0;
return n;
138 }
else {
return fProgressPerf;} }
139 TList *GetConfigParams(Bool_t steal = kFALSE) {
if (steal) { TList *l = fConfigParams; fConfigParams = 0;
return l;
140 }
else {
return fConfigParams;} }
141 virtual void MarkBad(TSlave * , TProofProgressStatus * , TList ** ) {
return; }
142 virtual Int_t AddProcessed(TSlave * , TProofProgressStatus * ,
143 Double_t , TList ** ) {
return 0; }
144 TProofProgressStatus *GetStatus() {
return fProgressStatus; }
145 void SetProgressStatus(TProofProgressStatus *st) { fProgressStatus = st; }
146 void SetTotalEntries(Long64_t ent) { fTotalEntries = ent; }
148 TMap *GetSlaveStats()
const {
return fSlaveStats; }
150 virtual Int_t GetActiveWorkers() {
return -1; }
152 ClassDef(TVirtualPacketizer,0)
157 class TVirtualPacketizer::TVirtualSlaveStat :
public TObject {
159 friend class TPacketizerAdaptive;
160 friend class TPacketizer;
165 TProofProgressStatus *fStatus;
168 const char *GetName()
const {
return fWrkFQDN.Data(); }
169 const char *GetOrdinal()
const {
return fSlave->GetOrdinal(); }
170 Long64_t GetEntriesProcessed()
const {
return fStatus?fStatus->GetEntries():-1; }
171 Double_t GetProcTime()
const {
return fStatus?fStatus->GetProcTime():-1; }
172 Float_t GetAvgRate() {
return fStatus->GetRate(); }
173 TProofProgressStatus *GetProgressStatus() {
return fStatus; }
174 virtual TProofProgressStatus *AddProcessed(TProofProgressStatus *st) = 0;