ROOT logo
// @(#)root/base:$Id$
// Author: Kristjan Gulbrandsen   11/05/04

/*************************************************************************
 * Copyright (C) 1995-2004, Rene Brun and Fons Rademakers.               *
 * All rights reserved.                                                  *
 *                                                                       *
 * For the licensing terms see $ROOTSYS/LICENSE.                         *
 * For the list of contributors see $ROOTSYS/README/CREDITS.             *
 *************************************************************************/

#ifndef ROOT_TVirtualPerfStats
#define ROOT_TVirtualPerfStats

//////////////////////////////////////////////////////////////////////////
//                                                                      //
// TVirtualPerfStats                                                    //
//                                                                      //
// Provides the interface for the PROOF internal performance measurment //
// and event tracing.                                                   //
//                                                                      //
//////////////////////////////////////////////////////////////////////////


#ifndef ROOT_TObject
#include "TObject.h"
#endif


class TFile;


class TVirtualPerfStats : public TObject {

public:
   virtual ~TVirtualPerfStats() {}

   enum EEventType {
      kUnDefined,
      kPacket,       //info of single packet processing
      kStart,        //begin of run
      kStop,         //end of run
      kFile,         //file started/finished in packetizer
      kFileOpen,     //opening data file statistics
      kFileRead,     //reading data file event
      kRate,         //processing {evt, MB} rates
      kNumEventType  //number of entries, must be last
   };

   static TVirtualPerfStats *&CurrentPerfStats();  // Return the current perfStats for this thread.

   virtual void SimpleEvent(EEventType type) = 0;

   virtual void PacketEvent(const char *slave, const char *slavename, const char *filename,
                            Long64_t eventsprocessed, Double_t latency,
                            Double_t proctime, Double_t cputime,
                            Long64_t bytesRead) = 0;

   virtual void FileEvent(const char *slave, const char *slavename, const char *nodename,
                          const char *filename, Bool_t isStart) = 0;

   virtual void FileOpenEvent(TFile *file, const char *filename, Double_t start) = 0;

   virtual void FileReadEvent(TFile *file, Int_t len, Double_t start) = 0;

   virtual void UnzipEvent(TObject *tree, Long64_t pos, Double_t start, Int_t complen, Int_t objlen) = 0;

   virtual void RateEvent(Double_t proctime, Double_t deltatime,
                          Long64_t eventsprocessed, Long64_t bytesRead) = 0;

   virtual void SetBytesRead(Long64_t num) = 0;
   virtual Long64_t GetBytesRead() const = 0;
   virtual void SetNumEvents(Long64_t num) = 0;
   virtual Long64_t GetNumEvents() const = 0;

   static const char *EventType(EEventType type);

   ClassDef(TVirtualPerfStats,0)  // ABC for collecting PROOF statistics
};


#ifndef __CINT__
#define gPerfStats (TVirtualPerfStats::CurrentPerfStats())

#elif defined(__MAKECINT__)
// To properly handle the use of gPerfStats in header files (in static declarations)
R__EXTERN TVirtualPerfStats *gPerfStats;
#endif


#endif
 TVirtualPerfStats.h:1
 TVirtualPerfStats.h:2
 TVirtualPerfStats.h:3
 TVirtualPerfStats.h:4
 TVirtualPerfStats.h:5
 TVirtualPerfStats.h:6
 TVirtualPerfStats.h:7
 TVirtualPerfStats.h:8
 TVirtualPerfStats.h:9
 TVirtualPerfStats.h:10
 TVirtualPerfStats.h:11
 TVirtualPerfStats.h:12
 TVirtualPerfStats.h:13
 TVirtualPerfStats.h:14
 TVirtualPerfStats.h:15
 TVirtualPerfStats.h:16
 TVirtualPerfStats.h:17
 TVirtualPerfStats.h:18
 TVirtualPerfStats.h:19
 TVirtualPerfStats.h:20
 TVirtualPerfStats.h:21
 TVirtualPerfStats.h:22
 TVirtualPerfStats.h:23
 TVirtualPerfStats.h:24
 TVirtualPerfStats.h:25
 TVirtualPerfStats.h:26
 TVirtualPerfStats.h:27
 TVirtualPerfStats.h:28
 TVirtualPerfStats.h:29
 TVirtualPerfStats.h:30
 TVirtualPerfStats.h:31
 TVirtualPerfStats.h:32
 TVirtualPerfStats.h:33
 TVirtualPerfStats.h:34
 TVirtualPerfStats.h:35
 TVirtualPerfStats.h:36
 TVirtualPerfStats.h:37
 TVirtualPerfStats.h:38
 TVirtualPerfStats.h:39
 TVirtualPerfStats.h:40
 TVirtualPerfStats.h:41
 TVirtualPerfStats.h:42
 TVirtualPerfStats.h:43
 TVirtualPerfStats.h:44
 TVirtualPerfStats.h:45
 TVirtualPerfStats.h:46
 TVirtualPerfStats.h:47
 TVirtualPerfStats.h:48
 TVirtualPerfStats.h:49
 TVirtualPerfStats.h:50
 TVirtualPerfStats.h:51
 TVirtualPerfStats.h:52
 TVirtualPerfStats.h:53
 TVirtualPerfStats.h:54
 TVirtualPerfStats.h:55
 TVirtualPerfStats.h:56
 TVirtualPerfStats.h:57
 TVirtualPerfStats.h:58
 TVirtualPerfStats.h:59
 TVirtualPerfStats.h:60
 TVirtualPerfStats.h:61
 TVirtualPerfStats.h:62
 TVirtualPerfStats.h:63
 TVirtualPerfStats.h:64
 TVirtualPerfStats.h:65
 TVirtualPerfStats.h:66
 TVirtualPerfStats.h:67
 TVirtualPerfStats.h:68
 TVirtualPerfStats.h:69
 TVirtualPerfStats.h:70
 TVirtualPerfStats.h:71
 TVirtualPerfStats.h:72
 TVirtualPerfStats.h:73
 TVirtualPerfStats.h:74
 TVirtualPerfStats.h:75
 TVirtualPerfStats.h:76
 TVirtualPerfStats.h:77
 TVirtualPerfStats.h:78
 TVirtualPerfStats.h:79
 TVirtualPerfStats.h:80
 TVirtualPerfStats.h:81
 TVirtualPerfStats.h:82
 TVirtualPerfStats.h:83
 TVirtualPerfStats.h:84
 TVirtualPerfStats.h:85
 TVirtualPerfStats.h:86
 TVirtualPerfStats.h:87
 TVirtualPerfStats.h:88
 TVirtualPerfStats.h:89
 TVirtualPerfStats.h:90
 TVirtualPerfStats.h:91