Back to home page

EIC code displayed by LXR

 
 

    


Warning, file /include/root/TFileStager.h was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

0001 // @(#)root/net:$Id$
0002 // Author: A. Peters, G. Ganis   7/2/2007
0003 
0004 /*************************************************************************
0005  * Copyright (C) 1995-2002, Rene Brun and Fons Rademakers.               *
0006  * All rights reserved.                                                  *
0007  *                                                                       *
0008  * For the licensing terms see $ROOTSYS/LICENSE.                         *
0009  * For the list of contributors see $ROOTSYS/README/CREDITS.             *
0010  *************************************************************************/
0011 
0012 #ifndef ROOT_TFileStager
0013 #define ROOT_TFileStager
0014 
0015 //////////////////////////////////////////////////////////////////////////
0016 //                                                                      //
0017 // TFileStager                                                          //
0018 //                                                                      //
0019 // Abstract base class defining an interface to a stager.               //
0020 //                                                                      //
0021 // To open a connection to a stager use the static method               //
0022 // Open("<stager>"), where <stager> contains a keyword allowing to load //
0023 // the relevant plug-in, e.g.                                           //
0024 //           TFileStager::Open("root://lxb6064.cern.ch")                //
0025 // will load TXNetFileStager and initialize it for the redirector at    //
0026 // lxb6046.cern.ch .                                                    //
0027 //                                                                      //
0028 //////////////////////////////////////////////////////////////////////////
0029 
0030 #include "TNamed.h"
0031 #include "TString.h"
0032 
0033 class TCollection;
0034 class TFileCollection;
0035 
0036 class TFileStager : public TNamed {
0037 
0038 public:
0039    TFileStager(const char *stager) : TNamed(stager, stager) { }
0040    virtual ~TFileStager() { }
0041 
0042    virtual TList          *GetStaged(TCollection *pathlist);
0043    virtual Bool_t          IsStaged(const char *);
0044    virtual Int_t           Locate(const char *u, TString &f);
0045    virtual Int_t           LocateCollection(TFileCollection *fc, Bool_t addDummyUrl = kFALSE);
0046    virtual Bool_t          Matches(const char *s) { return ((s && (fName == s)) ? kTRUE : kFALSE); }
0047    virtual Bool_t          Stage(const char *, Option_t * = nullptr) { return kTRUE; }
0048    virtual Bool_t          Stage(TCollection *pathlist, Option_t *opt = nullptr);
0049 
0050    virtual Bool_t          IsValid() const { return kTRUE; }
0051 
0052    // Extract the path name from supported object types
0053    static TString          GetPathName(TObject *o);
0054 
0055    //--- Load desired plugin
0056    static TFileStager *Open(const char *stager);
0057 
0058    ClassDefOverride(TFileStager,0)  // ABC defining interface to a stager
0059 };
0060 
0061 #endif