#ifndef ROOT_TProofPlayer
#define ROOT_TProofPlayer
#ifndef ROOT_TVirtualProofPlayer
#include "TVirtualProofPlayer.h"
#endif
#ifndef ROOT_TArrayL64
#include "TArrayL64.h"
#endif
#ifndef ROOT_TList
#include "TList.h"
#endif
#ifndef ROOT_TSystem
#include "TSystem.h"
#endif
#ifndef ROOT_TQueryResult
#include "TQueryResult.h"
#endif
class TSelector;
class TProof;
class TSocket;
class TVirtualPacketizer;
class TSlave;
class TEventIter;
class TProofStats;
class TMutex;
class TStatus;
class TTimer;
class TProofPlayer : public TVirtualProofPlayer {
private:
   TList        *fAutoBins;  
protected:
   TList        *fInput;           
   TList        *fOutput;          
   TSelector    *fSelector;        
   TClass       *fSelectorClass;   
   TTimer       *fFeedbackTimer;   
   Long_t        fFeedbackPeriod;  
   TEventIter   *fEvIter;          
   TStatus      *fSelStatus;       
   EExitStatus   fExitStatus;      
   Long64_t      fEventsProcessed; 
   Long64_t      fTotalEvents;     
   TList        *fQueryResults;    
   TQueryResult *fQuery;           
   TQueryResult *fPreviousQuery;   
   Int_t         fDrawQueries;     
   Int_t         fMaxDrawQueries;  
   TTimer       *fStopTimer;       
   TMutex       *fStopTimerMtx;    
   TTimer       *fDispatchTimer;    
   void         *GetSender() { return this; }  
   virtual void SetupFeedback();  
public:   
   virtual void StopFeedback();   
protected:
   class TCleanup {
   private:
      TProofPlayer *fPlayer;
   public:
      TCleanup(TProofPlayer *p) : fPlayer(p) { }
      ~TCleanup() { gSystem->Syslog(kLogErr, "!!!cleanup!!!"); fPlayer->StopFeedback(); }
   };
public:
   enum EStatusBits { kDispatchOneEvent = BIT(15) };
   TProofPlayer(TProof *proof = 0);
   virtual ~TProofPlayer();
   Long64_t  Process(TDSet *set,
                     const char *selector, Option_t *option = "",
                     Long64_t nentries = -1, Long64_t firstentry = 0,
                     TEventList *evl = 0);
   Long64_t  Finalize(Bool_t force = kFALSE, Bool_t sync = kFALSE);
   Long64_t  Finalize(TQueryResult *qr);
   Long64_t  DrawSelect(TDSet *set, const char *varexp,
                        const char *selection, Option_t *option = "",
                        Long64_t nentries = -1, Long64_t firstentry = 0);
   void      HandleGetTreeHeader(TMessage *mess);
   void      HandleRecvHisto(TMessage *mess);
   void      StopProcess(Bool_t abort, Int_t timeout = -1);
   void      AddInput(TObject *inp);
   void      ClearInput();
   TObject  *GetOutput(const char *name) const;
   TList    *GetOutputList() const;
   TList    *GetInputList() const { return fInput; }
   TList    *GetListOfResults() const { return fQueryResults; }
   void      AddQueryResult(TQueryResult *q);
   TQueryResult *GetCurrentQuery() const { return fQuery; }
   TQueryResult *GetQueryResult(const char *ref);
   void      RemoveQueryResult(const char *ref);
   void      SetCurrentQuery(TQueryResult *q);
   void      SetMaxDrawQueries(Int_t max) { fMaxDrawQueries = max; }
   void      RestorePreviousQuery() { fQuery = fPreviousQuery; }
   Int_t     AddOutputObject(TObject *obj);
   void      AddOutput(TList *out);   
   void      StoreOutput(TList *out);   
   void      StoreFeedback(TObject *slave, TList *out); 
   void      Progress(Long64_t total, Long64_t processed); 
   void      Progress(TSlave *, Long64_t total, Long64_t processed)
                { Progress(total, processed); }
   void      Progress(Long64_t total, Long64_t processed, Long64_t bytesread,
                      Float_t initTime, Float_t procTime,
                      Float_t evtrti, Float_t mbrti); 
   void      Feedback(TList *objs); 
   TDrawFeedback *CreateDrawFeedback(TProof *p);
   void           SetDrawFeedbackOption(TDrawFeedback *f, Option_t *opt);
   void           DeleteDrawFeedback(TDrawFeedback *f);
   TDSetElement *GetNextPacket(TSlave *slave, TMessage *r);
   Int_t     ReinitSelector(TQueryResult *qr);
   void      UpdateAutoBin(const char *name,
                           Double_t& xmin, Double_t& xmax,
                           Double_t& ymin, Double_t& ymax,
                           Double_t& zmin, Double_t& zmax);
   Bool_t    IsClient() const { return kFALSE; }
   EExitStatus GetExitStatus() const { return fExitStatus; }
   Long64_t    GetEventsProcessed() const { return fEventsProcessed; }
   void        AddEventsProcessed(Long64_t ev) { fEventsProcessed += ev; }
   void      SetDispatchTimer(Bool_t on = kTRUE);
   void      SetStopTimer(Bool_t on = kTRUE,
                          Bool_t abort = kFALSE, Int_t timeout = 0);
   ClassDef(TProofPlayer,0)  
};
class TProofPlayerLocal : public TProofPlayer {
public:
   TProofPlayerLocal(TProof *) { }
   ClassDef(TProofPlayerLocal,0)  
};
class TProofPlayerRemote : public TProofPlayer {
private:
   TProof             *fProof;         
   TList              *fOutputLists;   
   TList              *fFeedback;      
   TList              *fFeedbackLists; 
   TVirtualPacketizer *fPacketizer;    
   TDSet              *fDSet;          
   TList              *MergeFeedback();
protected:
   virtual Bool_t  HandleTimer(TTimer *timer);
   virtual Bool_t  SendSelector(const char *selector_file); 
   TProof         *GetProof() const { return fProof; }
   void            SetupFeedback();  
   void            StopFeedback();   
public:
   TProofPlayerRemote(TProof *proof = 0) : fProof(proof), fOutputLists(0), fFeedback(0),
                                           fFeedbackLists(0), fPacketizer(0) {}
   virtual ~TProofPlayerRemote();   
   Long64_t       Process(TDSet *set, const char *selector,
                          Option_t *option = "", Long64_t nentries = -1,
                          Long64_t firstentry = 0, TEventList *evl = 0);
   Long64_t       Finalize(Bool_t force = kFALSE, Bool_t sync = kFALSE);
   Long64_t       Finalize(TQueryResult *qr);
   Long64_t       DrawSelect(TDSet *set, const char *varexp,
                             const char *selection, Option_t *option = "",
                             Long64_t nentries = -1, Long64_t firstentry = 0);
   void           StopProcess(Bool_t abort, Int_t timeout = -1);
   void           StoreOutput(TList *out);   
   void           StoreFeedback(TObject *slave, TList *out); 
   Int_t          Incorporate(TObject *obj, TList *out, Bool_t &merged);
   Int_t          AddOutputObject(TObject *obj);
   void           AddOutput(TList *out);   
   void           MergeOutput();
   void           Progress(Long64_t total, Long64_t processed); 
   void           Progress(TSlave*, Long64_t total, Long64_t processed)
                     { Progress(total, processed); }
   void           Progress(Long64_t total, Long64_t processed, Long64_t bytesread,
                           Float_t initTime, Float_t procTime,
                           Float_t evtrti, Float_t mbrti); 
   void           Feedback(TList *objs); 
   TDSetElement  *GetNextPacket(TSlave *slave, TMessage *r);
   Bool_t         IsClient() const;
   ClassDef(TProofPlayerRemote,0)  
};
class TProofPlayerSlave : public TProofPlayer {
private:
   TSocket *fSocket;
   TList   *fFeedback;  
   Bool_t HandleTimer(TTimer *timer);
protected:
   void SetupFeedback();
   void StopFeedback();
public:
   TProofPlayerSlave(TSocket *socket = 0) : fSocket(socket), fFeedback(0) { }
   void  HandleGetTreeHeader(TMessage *mess);
   ClassDef(TProofPlayerSlave,0)  
};
class TProofPlayerSuperMaster : public TProofPlayerRemote {
private:
   TArrayL64 fSlaveProgress;
   TArrayL64 fSlaveTotals;
   TList     fSlaves;
   Bool_t    fReturnFeedback;
protected:
   Bool_t HandleTimer(TTimer *timer);
   void   SetupFeedback();
public:
   TProofPlayerSuperMaster(TProof *proof = 0) :
      TProofPlayerRemote(proof), fReturnFeedback(kFALSE) { }
   virtual ~TProofPlayerSuperMaster() { }
   Long64_t Process(TDSet *set, const char *selector,
                    Option_t *option = "", Long64_t nentries = -1,
                    Long64_t firstentry = 0, TEventList *evl = 0);
   void  Progress(Long64_t total, Long64_t processed)
                    { TProofPlayerRemote::Progress(total, processed); }
   void  Progress(Long64_t total, Long64_t processed, Long64_t bytesread,
                  Float_t initTime, Float_t procTime,
                  Float_t evtrti, Float_t mbrti)
                    { TProofPlayerRemote::Progress(total, processed, bytesread,
                                                   initTime, procTime, evtrti, mbrti); }
   void  Progress(TSlave *sl, Long64_t total, Long64_t processed);
   ClassDef(TProofPlayerSuperMaster,0)  
};
#endif
This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.