#ifndef ROOT_TPacketizerAdaptive
#define ROOT_TPacketizerAdaptive
#ifndef ROOT_TVirtualPacketizer
#include "TVirtualPacketizer.h"
#endif
class TMessage;
class TTimer;
class TTree;
class TMap;
class TNtupleD;
class TProofStats;
class TRandom;
class TPacketizerAdaptive : public TVirtualPacketizer {
public:
class TFileNode;
class TFileStat;
class TSlaveStat;
private:
TList *fFileNodes;
TList *fUnAllocated;
TList *fActive;
TMap *fSlaveStats;
Int_t fMaxPerfIdx;
Float_t fFractionOfRemoteFiles;
Long64_t fNEventsOnRemLoc;
Float_t fBaseLocalPreference;
Bool_t fForceLocal;
TPacketizerAdaptive();
TPacketizerAdaptive(const TPacketizerAdaptive&);
void InitStats();
void operator=(const TPacketizerAdaptive&);
TFileNode *NextNode();
void RemoveUnAllocNode(TFileNode *);
TFileNode *NextActiveNode();
void RemoveActiveNode(TFileNode *);
TFileStat *GetNextUnAlloc(TFileNode *node = 0);
TFileStat *GetNextActive();
void RemoveActive(TFileStat *file);
void Reset();
void ValidateFiles(TDSet *dset, TList *slaves);
Int_t ReassignPacket(TDSetElement *e, TList **listOfMissingFiles);
void SplitPerHost(TList *elements, TList **listOfMissingFiles);
Int_t AddProcessed(TSlave *sl, TProofProgressStatus *st,
Double_t latency, TList **listOfMissingFiles = 0);
public:
static Long_t fgMaxSlaveCnt;
static Int_t fgPacketAsAFraction;
static Double_t fgMinPacketTime;
static Double_t fgMaxPacketTime;
static Int_t fgStrategy;
TPacketizerAdaptive(TDSet *dset, TList *slaves, Long64_t first, Long64_t num,
TList *input, TProofProgressStatus *st);
virtual ~TPacketizerAdaptive();
Int_t GetEstEntriesProcessed(Float_t, Long64_t &ent, Long64_t &bytes, Long64_t &calls);
Float_t GetCurrentRate(Bool_t &all);
Int_t CalculatePacketSize(TObject *slstat, Long64_t cachesz, Int_t learnent);
TDSetElement *GetNextPacket(TSlave *sl, TMessage *r);
void MarkBad(TSlave *s, TProofProgressStatus *status, TList **missingFiles);
Int_t GetActiveWorkers();
ClassDef(TPacketizerAdaptive,0)
};
#endif
TPacketizerAdaptive.h:100 TPacketizerAdaptive.h:101 TPacketizerAdaptive.h:102 TPacketizerAdaptive.h:103 TPacketizerAdaptive.h:104 TPacketizerAdaptive.h:105 TPacketizerAdaptive.h:106 TPacketizerAdaptive.h:107 TPacketizerAdaptive.h:108 TPacketizerAdaptive.h:109 TPacketizerAdaptive.h:110 TPacketizerAdaptive.h:111 TPacketizerAdaptive.h:112 TPacketizerAdaptive.h:113 TPacketizerAdaptive.h:114 TPacketizerAdaptive.h:115 TPacketizerAdaptive.h:116 TPacketizerAdaptive.h:117 TPacketizerAdaptive.h:118 TPacketizerAdaptive.h:119 TPacketizerAdaptive.h:120 TPacketizerAdaptive.h:121 TPacketizerAdaptive.h:122 TPacketizerAdaptive.h:123 TPacketizerAdaptive.h:124