TFileInfo.h

Go to the documentation of this file.
00001 // @(#)root/base:$Id: TFileInfo.h 33389 2010-05-05 14:18:07Z rdm $
00002 // Author: Andreas-Joachim Peters   20/9/2005
00003 
00004 /*************************************************************************
00005  * Copyright (C) 1995-2005, Rene Brun and Fons Rademakers.               *
00006  * All rights reserved.                                                  *
00007  *                                                                       *
00008  * For the licensing terms see $ROOTSYS/LICENSE.                         *
00009  * For the list of contributors see $ROOTSYS/README/CREDITS.             *
00010  *************************************************************************/
00011 
00012 #ifndef ROOT_TFileInfo
00013 #define ROOT_TFileInfo
00014 
00015 //////////////////////////////////////////////////////////////////////////
00016 //                                                                      //
00017 // TFileInfo                                                            //
00018 //                                                                      //
00019 // Class describing a generic file including meta information.          //
00020 //                                                                      //
00021 //////////////////////////////////////////////////////////////////////////
00022 
00023 #ifndef ROOT_TNamed
00024 #include "TNamed.h"
00025 #endif
00026 
00027 #ifndef ROOT_Turl
00028 #include "TUrl.h"
00029 #endif
00030 
00031 #ifndef ROOT_TUUID
00032 #include "TUUID.h"
00033 #endif
00034 
00035 #ifndef ROOT_TMD5
00036 #include "TMD5.h"
00037 #endif
00038 
00039 #ifndef ROOT_TObjString
00040 #include "TObjString.h"
00041 #endif
00042 
00043 #ifndef ROOT_TList
00044 #include "TList.h"
00045 #endif
00046 
00047 class TFileInfoMeta;
00048 
00049 
00050 class TFileInfo : public TNamed {
00051 
00052 private:
00053    TUrl            *fCurrentUrl;     //! current URL to access the file, points to URL
00054                                      //  in the fUrlList or 0, if the list end is reached
00055    TList           *fUrlList;        // list of file URLs
00056    Long64_t         fSize;           // file size
00057    TUUID           *fUUID;           //-> uuid of the referenced file
00058    TMD5            *fMD5;            //-> md5 digest of the file
00059    TList           *fMetaDataList;   // generic list of file meta data object(s)
00060 
00061    void             ParseInput(const char *in);
00062 
00063    TFileInfo& operator=(const TFileInfo&);  // not implemented
00064 
00065 public:
00066    enum EStatusBits {
00067       kStaged    = BIT(15),
00068       kCorrupted = BIT(16)
00069    };
00070 
00071    TFileInfo(const char *url = 0, Long64_t size = -1, const char *uuid = 0,
00072              const char *md5 = 0, TObject *meta = 0);
00073    TFileInfo(const TFileInfo &);
00074 
00075    virtual ~TFileInfo();
00076 
00077    void            ResetUrl() { fCurrentUrl = (TUrl*)fUrlList->First(); }
00078    TUrl           *NextUrl();
00079    TUrl           *GetCurrentUrl() const;
00080    TUrl           *GetFirstUrl() const { return (TUrl*)fUrlList->First(); }
00081    Int_t           GetNUrls() const    { return fUrlList->GetEntries(); }
00082 
00083    Bool_t          SetCurrentUrl(const char *url);
00084    Bool_t          SetCurrentUrl(TUrl *url);
00085 
00086    Long64_t        GetSize() const         { return fSize; }
00087    TUUID          *GetUUID() const         { return fUUID; }
00088    TMD5           *GetMD5() const          { return fMD5; }
00089    TList          *GetMetaDataList() const { return fMetaDataList; }
00090    TFileInfoMeta  *GetMetaData(const char *meta = 0) const;
00091 
00092    void            SetSize(Long64_t size)  { fSize = size; }
00093    void            SetUUID(const char *uuid);
00094 
00095    TUrl           *FindByUrl(const char *url, Bool_t withDeflt = kFALSE);
00096 
00097    Bool_t          AddUrl(const char *url, Bool_t infront = kFALSE);
00098    Bool_t          RemoveUrl(const char *url);
00099    Bool_t          AddMetaData(TObject *meta);
00100    Bool_t          RemoveMetaData(const char *meta = 0);
00101 
00102    Bool_t          IsSortable() const { return kTRUE; }
00103    Int_t           Compare(const TObject *obj) const;
00104 
00105    void            Print(Option_t *options="") const;
00106 
00107    ClassDef(TFileInfo,3)   // Describes generic file info including meta data information
00108 };
00109 
00110 
00111 class TFileInfoMeta : public TNamed {
00112 
00113 private:
00114    Long64_t      fEntries;    // number of entries in tree or number of objects
00115    Long64_t      fFirst;      // first valid tree entry
00116    Long64_t      fLast;       // last valid tree entry
00117    Bool_t        fIsTree;     // true if type is a TTree (or TTree derived)
00118    Long64_t      fTotBytes;   // uncompressed size in bytes
00119    Long64_t      fZipBytes;   // compressed size in bytes
00120 
00121    TFileInfoMeta& operator=(const TFileInfoMeta&);  // not implemented
00122 
00123 public:
00124    enum EStatusBits { kExternal  = BIT(15) };
00125 
00126    TFileInfoMeta() : fEntries(-1), fFirst(0), fLast(-1),
00127                      fIsTree(kFALSE), fTotBytes(-1), fZipBytes(-1)
00128                      { ResetBit(TFileInfoMeta::kExternal); }
00129    TFileInfoMeta(const char *objPath, const char *objClass = "TTree",
00130                  Long64_t entries = -1, Long64_t first = 0, Long64_t last = -1,
00131                  Long64_t totbytes = -1, Long64_t zipbytes = -1);
00132    TFileInfoMeta(const char *objPath, const char *objDir,
00133                  const char *objClass, Long64_t entries = -1,
00134                  Long64_t first = 0, Long64_t last = -1,
00135                  Long64_t totbytes = -1, Long64_t zipbytes = -1);
00136    TFileInfoMeta(const TFileInfoMeta &m);
00137 
00138    virtual ~TFileInfoMeta() { }
00139 
00140    const char     *GetObject() const;
00141    const char     *GetClass() const        { return GetTitle(); }
00142    const char     *GetDirectory() const;
00143    Long64_t        GetEntries() const      { return fEntries; }
00144    Long64_t        GetFirst() const        { return fFirst; }
00145    Long64_t        GetLast() const         { return fLast; }
00146    Bool_t          IsTree() const          { return fIsTree; }
00147    Long64_t        GetTotBytes() const     { return fTotBytes; }
00148    Long64_t        GetZipBytes() const     { return fZipBytes; }
00149 
00150    void            SetEntries(Long64_t entries) { fEntries = entries; }
00151    void            SetFirst(Long64_t first)     { fFirst = first; }
00152    void            SetLast(Long64_t last)       { fLast = last; }
00153    void            SetTotBytes(Long64_t tot)    { fTotBytes = tot; }
00154    void            SetZipBytes(Long64_t zip)    { fZipBytes = zip; }
00155 
00156    void            Print(Option_t *options="") const;
00157 
00158    ClassDef(TFileInfoMeta,2)   // Describes TFileInfo meta data
00159 };
00160 
00161 #endif

Generated on Tue Jul 5 14:10:27 2011 for ROOT_528-00b_version by  doxygen 1.5.1