Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2025-06-17 01:30:27

0001 #ifndef FWCore_Services_SiteLocalConfigService_H
0002 #define FWCore_Services_SiteLocalConfigService_H
0003 
0004 ///////////////////////////////////////////////////////////////////////
0005 //
0006 // dataCatalogs(unsigned catType) returns multiple data catalogs in site-local-config.xml.
0007 //    catType=TrivialCatalog: returns trivial catalogs defined in <event-data> blocks
0008 //    catType=RucioCatalog: returns catalogs defined in <data-access> blocks
0009 //    (the "enum" is defined in FWCore/Catalog/interface/SiteLocalConfig.h)
0010 ///////////////////////////////////////////////////////////////////////
0011 //<<<<<< INCLUDES                                                       >>>>>>
0012 #include <string>
0013 #include <list>
0014 #include <vector>
0015 #include "FWCore/Catalog/interface/SiteLocalConfig.h"
0016 #include "FWCore/Utilities/interface/propagate_const.h"
0017 #include "tinyxml2.h"
0018 
0019 //<<<<<< PUBLIC DEFINES                                                 >>>>>>
0020 //<<<<<< PUBLIC CONSTANTS                                               >>>>>>
0021 //<<<<<< PUBLIC TYPES                                                   >>>>>>
0022 namespace edm {
0023   class ParameterSet;
0024 }
0025 
0026 //<<<<<< PUBLIC VARIABLES                                               >>>>>>
0027 //<<<<<< PUBLIC FUNCTIONS                                               >>>>>>
0028 //<<<<<< CLASS DECLARATIONS                                             >>>>>>
0029 
0030 namespace edm {
0031   class ConfigurationDescriptions;
0032   namespace service {
0033 
0034     class SiteLocalConfigService : public SiteLocalConfig {
0035     public:
0036       explicit SiteLocalConfigService(ParameterSet const& pset);
0037 
0038       std::vector<std::string> const& trivialDataCatalogs() const override;
0039       std::vector<edm::CatalogAttributes> const& dataCatalogs() const override;
0040       std::filesystem::path const storageDescriptionPath(edm::CatalogAttributes const& aDataCatalog) const override;
0041       std::string const lookupCalibConnect(std::string const& input) const override;
0042 
0043       std::string const* sourceCacheTempDir() const override;
0044       double const* sourceCacheMinFree() const override;
0045       std::string const* sourceCacheHint() const override;
0046       std::string const* sourceCloneCacheHint() const override;
0047       std::string const* sourceReadHint() const override;
0048       unsigned int const* sourceTTreeCacheSize() const override;
0049       unsigned int const* sourceTimeout() const override;
0050       bool enablePrefetching() const override;
0051       unsigned int debugLevel() const override;
0052       std::vector<std::string> const* sourceNativeProtocols() const override;
0053       struct addrinfo const* statisticsDestination() const override;
0054       std::set<std::string> const* statisticsInfo() const override;
0055       std::string const& siteName() const override;
0056       std::string const& subSiteName() const override;
0057       bool useLocalConnectString() const override;
0058       std::string const& localConnectPrefix() const override;
0059       std::string const& localConnectSuffix() const override;
0060 
0061       // implicit copy constructor
0062       // implicit assignment operator
0063       ~SiteLocalConfigService() override;
0064 
0065       static void fillDescriptions(ConfigurationDescriptions& descriptions);
0066 
0067     private:
0068       void getCatalog(tinyxml2::XMLElement const& cat, std::string site, std::string subSite);
0069       void parse(std::string const& url);
0070       void computeStatisticsDestination();
0071       std::string const frontierConnect(std::string const& servlet) const;
0072       std::string m_url;
0073       std::vector<std::string> m_trivialDataCatalogs;
0074       std::vector<edm::CatalogAttributes> m_dataCatalogs;
0075       std::string m_frontierConnect;
0076       bool m_connected;
0077       std::string m_cacheTempDir;
0078       std::string const* m_cacheTempDirPtr;
0079       double m_cacheMinFree;
0080       double const* m_cacheMinFreePtr;
0081       std::string m_cacheHint;
0082       std::string const* m_cacheHintPtr;
0083       std::string m_cloneCacheHint;
0084       std::string const* m_cloneCacheHintPtr;
0085       std::string m_readHint;
0086       std::string const* m_readHintPtr;
0087       unsigned int m_ttreeCacheSize;
0088       unsigned int const* m_ttreeCacheSizePtr;
0089       unsigned int m_timeout;
0090       unsigned int const* m_timeoutPtr;
0091       unsigned int m_debugLevel;
0092       bool m_enablePrefetching;
0093       bool const* m_enablePrefetchingPtr;
0094       std::vector<std::string> m_nativeProtocols;
0095       std::vector<std::string> const* m_nativeProtocolsPtr;
0096       std::string m_statisticsDestination;
0097       edm::propagate_const<struct addrinfo*> m_statisticsAddrInfo;
0098       static const std::string m_statisticsDefaultPort;
0099       std::set<std::string> m_statisticsInfo;
0100       bool m_statisticsInfoAvail;
0101       std::string m_siteName;
0102       std::string m_subSiteName;
0103       bool m_useLocalConnectString = false;
0104       std::string m_localConnectPrefix;
0105       std::string m_localConnectSuffix;
0106     };
0107 
0108   }  // namespace service
0109 }  // namespace edm
0110 
0111 //<<<<<< INLINE PUBLIC FUNCTIONS                                        >>>>>>
0112 //<<<<<< INLINE MEMBER FUNCTIONS                                        >>>>>>
0113 
0114 #endif  // FRAMEWORK_SITE_LOCAL_CONFIG_H