Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:11:54

0001 #ifndef FWCore_Catalog_SiteLocalConfig_h
0002 #define FWCore_Catalog_SiteLocalConfig_h
0003 ////////////////////////////////////////////////////////////
0004 //
0005 // Abstract class. dataCatalogs() returns multiple data catalogs from site-local-config.xml. It is overridden in derived classes.
0006 //
0007 ////////////////////////////////////////////////////////////
0008 
0009 // INCLUDES
0010 #include <set>
0011 #include <string>
0012 #include <vector>
0013 #include <netdb.h>
0014 #include <filesystem>
0015 // PUBLIC DEFINES
0016 // PUBLIC CONSTANTS
0017 // PUBLIC TYPES
0018 namespace edm {
0019   class ParameterSet;
0020   class ActivityRegistry;
0021 
0022   //attributes of a data catalog (Rucio format) defined in <data-access> block of site-local-config.xml. See further description in SiteLocalConfigService.cc
0023   struct CatalogAttributes {
0024     CatalogAttributes() = default;
0025     CatalogAttributes(std::string input_site,
0026                       std::string input_subSite,
0027                       std::string input_storageSite,
0028                       std::string input_volume,
0029                       std::string input_protocol)
0030         : site(std::move(input_site)),
0031           subSite(std::move(input_subSite)),
0032           storageSite(std::move(input_storageSite)),
0033           volume(std::move(input_volume)),
0034           protocol(std::move(input_protocol)) {}
0035     bool operator==(const CatalogAttributes& aCatalog) const {
0036       return site == aCatalog.site && subSite == aCatalog.subSite && storageSite == aCatalog.storageSite &&
0037              volume == aCatalog.volume && protocol == aCatalog.protocol;
0038     }
0039     bool empty() const { return site.empty() && storageSite.empty() && volume.empty() && protocol.empty(); }
0040     std::string site;
0041     std::string subSite;
0042     std::string storageSite;  //site where storage description is used
0043     std::string volume;
0044     std::string protocol;
0045   };
0046 
0047   enum class CatalogType { TrivialCatalog, RucioCatalog };
0048 }  // namespace edm
0049 
0050 // PUBLIC VARIABLES
0051 // PUBLIC FUNCTIONS
0052 // CLASS DECLARATIONS
0053 
0054 namespace edm {
0055   class SiteLocalConfig {
0056   public:
0057     SiteLocalConfig() {}
0058     virtual ~SiteLocalConfig() {}
0059 
0060     virtual std::vector<std::string> const& trivialDataCatalogs() const = 0;
0061     virtual std::vector<edm::CatalogAttributes> const& dataCatalogs() const = 0;
0062     virtual std::filesystem::path const storageDescriptionPath(const edm::CatalogAttributes& aDataCatalog) const = 0;
0063     virtual std::string const lookupCalibConnect(std::string const& input) const = 0;
0064     virtual std::string const rfioType(void) const = 0;
0065 
0066     virtual std::string const* sourceCacheTempDir() const = 0;
0067     virtual double const* sourceCacheMinFree() const = 0;
0068     virtual std::string const* sourceCacheHint() const = 0;
0069     virtual std::string const* sourceCloneCacheHint() const = 0;
0070     virtual std::string const* sourceReadHint() const = 0;
0071     virtual unsigned int const* sourceTTreeCacheSize() const = 0;
0072     virtual unsigned int const* sourceTimeout() const = 0;
0073     virtual bool enablePrefetching() const = 0;
0074     virtual unsigned int debugLevel() const = 0;
0075     virtual std::vector<std::string> const* sourceNativeProtocols() const = 0;
0076     virtual struct addrinfo const* statisticsDestination() const = 0;
0077     virtual std::set<std::string> const* statisticsInfo() const = 0;
0078     virtual std::string const& siteName(void) const = 0;
0079     virtual std::string const& subSiteName(void) const = 0;
0080     virtual bool useLocalConnectString() const = 0;
0081     virtual std::string const& localConnectPrefix() const = 0;
0082     virtual std::string const& localConnectSuffix() const = 0;
0083 
0084     // implicit copy constructor
0085     // implicit assignment operator
0086   private:
0087   };
0088 }  // namespace edm
0089 
0090 // INLINE PUBLIC FUNCTIONS
0091 // INLINE MEMBER FUNCTIONS
0092 
0093 #endif  //FWCore_Catalog_SiteLocalConfig_h