ROOT logo
// @(#)root/proof:$Id: TProofOutputFile.h 25949 2008-10-24 18:03:49Z ganis $
// Author: Long Tran-Thanh   14/09/07

/*************************************************************************
 * 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_TProofOutputFile
#define ROOT_TProofOutputFile


//////////////////////////////////////////////////////////////////////////
//                                                                      //
// TProofOutputFile                                                           //
//                                                                      //
// Small class to steer the merging of files produced on workers        //
//                                                                      //
//////////////////////////////////////////////////////////////////////////

#ifndef ROOT_TNamed
#include "TNamed.h"
#endif

class TCollection;
class TProofOutputFile;
class TString;
class TList;
class TFile;
class TFileMerger;

class TProofOutputFile : public TNamed {

friend class TProof;
friend class TProofPlayer;

public:

private:
   TProofOutputFile(const TProofOutputFile&); // Not implemented
   TProofOutputFile& operator=(const TProofOutputFile&); // Not implemented

   TString  fDir;         // name of the directory
   TString  fFileName;
   TString  fFileName1;
   TString  fLocation;
   TString  fMode;
   TString  fOutputFileName;
   TString  fWorkerOrdinal;
   Bool_t   fIsLocal;     // kTRUE if the file is in the sandbox
   Bool_t   fMerged;

   TFileMerger *fMerger;  // Instance of the file merger for mode "CENTRAL"

   TString GetTmpName(const char* name);

   void ResolveKeywords(TString &fname);
   void SetFileName(const char* name);
   void SetDir(const char* dir) { fDir = dir; }
   void SetWorkerOrdinal(const char* ordinal) { fWorkerOrdinal = ordinal; }

   void AddFile(TFileMerger *merger, const char *path);
   void NotifyError(const char *errmsg);
   void Unlink(const char *path);

protected:

public:
   TProofOutputFile() : fDir(), fFileName(), fFileName1(), fLocation(),
     fMode(), fOutputFileName(), fWorkerOrdinal(), fIsLocal(kFALSE), fMerged(kFALSE),
     fMerger(0) {}

   TProofOutputFile(const char* path,
                    const char* location = "REMOTE", const char* mode = "CENTRAL");
   virtual ~TProofOutputFile();

   const char* GetDir() const { return fDir; }
   TFileMerger* GetFileMerger(Bool_t local = kFALSE); // Instance of the file merger for mode "CENTRAL"
   const char* GetFileName(Bool_t tmpName = kTRUE) const { return (tmpName) ? fFileName1 : fFileName; }
   const char* GetLocation() const { return fLocation; }
   const char* GetMode() const { return fMode; }
   const char* GetOutputFileName() const { return fOutputFileName; }
   const char* GetWorkerOrdinal() const { return fWorkerOrdinal; }


   Int_t AdoptFile(TFile *f);                    // Adopt a TFile already open
   TFile* OpenFile(const char* opt);             // Open a file with the specified name in fFileName1
   Long64_t Merge(TCollection* list);
   void Print(Option_t *option="") const;
   void SetOutputFileName(const char *name);


   ClassDef(TProofOutputFile,1) // Wrapper class to steer the merging of files produced on workers
};

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