// @(#)root/proofplayer:$Id$
// Author: G. Ganis 2009

/*************************************************************************
 * Copyright (C) 1995-2002, 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_TPacketizerFile
#define ROOT_TPacketizerFile

//////////////////////////////////////////////////////////////////////////
//                                                                      //
// TPacketizerFile                                                      //
//                                                                      //
// This packetizer generates packets which conatin a single file path   //
// to be used in process. Used for tasks generating files, like in      //
// PROOF bench.                                                         //
//                                                                      //
//////////////////////////////////////////////////////////////////////////

#ifndef ROOT_TVirtualPacketizer
#include "TVirtualPacketizer.h"
#endif
#ifndef ROOT_TMap
#include "TMap.h"
#endif


class TMessage;
class TList;
class TStopwatch;

class TPacketizerFile : public TVirtualPacketizer {

public:              // This is always needed
   class TSlaveStat;
   class TIterObj;

private:
   TMap       *fFiles;           // Files to be produced/processed per node
   TList      *fNotAssigned;     // List of files not assigned to a specific node
   TList      *fIters;           // Iterators on the file lists per node
   Long64_t    fAssigned;        // No.files processed or being processed.
   Bool_t      fProcNotAssigned; // Whether to process files not asdigned to a worker
   Bool_t      fAddFileInfo;     // Whether to add the TFileInfo object in the packet

   TStopwatch *fStopwatch;       // For measuring the start time of each packet

   TPacketizerFile();
   // : fFiles(0), fNotAssigned(0), fIters(0), fAssigned(0),
   //                    fProcNotAssigned(kTRUE), fAddFileInfo(kFALSE), fStopwatch(0) { }
   TPacketizerFile(const TPacketizerFile&);     // no implementation, will generate
   void operator=(const TPacketizerFile&);  // error on accidental usage

public:
   TPacketizerFile(TList *workers, Long64_t, TList *input, TProofProgressStatus *st = 0);
   virtual ~TPacketizerFile();

   TDSetElement *GetNextPacket(TSlave *wrk, TMessage *r);

   Double_t      GetCurrentTime();

   Float_t       GetCurrentRate(Bool_t &all);
   Int_t         GetActiveWorkers() { return -1; }

   ClassDef(TPacketizerFile,0)  //Generate work packets for parallel processing
};

//-------------------------------------------------------------------------------

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