Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2025-04-02 23:19:23

0001 // -*- C++ -*-
0002 //
0003 // Package:     ESSources
0004 // Class  :     ProductResolverFactory
0005 //
0006 // Implementation:
0007 //     <Notes on implementation>
0008 //
0009 // Original Author:  Chris Jones
0010 //         Created:  Sat Jul 23 19:14:11 EDT 2005
0011 //
0012 
0013 // system include files
0014 
0015 // user include files
0016 #include "CondCore/ESSources/interface/ProductResolverFactory.h"
0017 #include "CondCore/ESSources/interface/ProductResolver.h"
0018 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0019 
0020 cond::ProductResolverWrapperBase::ProductResolverWrapperBase() {}
0021 
0022 cond::ProductResolverWrapperBase::~ProductResolverWrapperBase() {}
0023 
0024 void cond::ProductResolverWrapperBase::addInfo(std::string const& il, std::string const& cs, std::string const& tag) {
0025   m_label = il;
0026   m_connString = cs;
0027   m_tag = tag;
0028 }
0029 
0030 void cond::ProductResolverWrapperBase::loadTag(std::string const& tag) {
0031   m_session.transaction().start(true);
0032   m_iovProxy = m_session.readIov(tag);
0033   m_iovProxy.setPrintDebug(m_printDebug);
0034   m_session.transaction().commit();
0035   m_currentIov.clear();
0036   m_requests = std::make_shared<std::vector<cond::Iov_t>>();
0037   if (m_printDebug) {
0038     edm::LogSystem("ProductResolverWrapperBase") << "loadTag executed with tag: " << tag;
0039   }
0040 }
0041 
0042 void cond::ProductResolverWrapperBase::loadTag(std::string const& tag, boost::posix_time::ptime const& snapshotTime) {
0043   m_session.transaction().start(true);
0044   m_iovProxy = m_session.readIov(tag, snapshotTime);
0045   m_iovProxy.setPrintDebug(m_printDebug);
0046   m_session.transaction().commit();
0047   m_currentIov.clear();
0048   m_requests = std::make_shared<std::vector<cond::Iov_t>>();
0049   if (m_printDebug) {
0050     edm::LogSystem("ProductResolverWrapperBase")
0051         << "loadTag executed with tag: " << tag << " and snapshotTime: " << snapshotTime;
0052   }
0053 }
0054 
0055 void cond::ProductResolverWrapperBase::reload() {
0056   std::string tag = m_iovProxy.tagInfo().name;
0057   if (!tag.empty())
0058     loadTag(tag);
0059 }
0060 
0061 cond::ValidityInterval cond::ProductResolverWrapperBase::setIntervalFor(Time_t time) {
0062   if (!m_currentIov.isValidFor(time)) {
0063     m_currentIov.clear();
0064     m_session.transaction().start(true);
0065     m_currentIov = m_iovProxy.getInterval(time);
0066     m_session.transaction().commit();
0067   }
0068   if (m_printDebug) {
0069     edm::LogSystem("ProductResolverWrapperBase")
0070         << "setIntervalFor for tag:" << m_iovProxy.tagInfo().name << " executed with time: " << time << "\n"
0071         << " set ValidityInterval: since: " << m_currentIov.since << " till: " << m_currentIov.till;
0072   }
0073   return cond::ValidityInterval(m_currentIov.since, m_currentIov.till);
0074 }
0075 
0076 EDM_REGISTER_PLUGINFACTORY(cond::ProductResolverFactory, cond::pluginCategory());
0077 
0078 namespace cond {
0079   const char* pluginCategory() { return "CondProductResolverFactory"; }
0080 }  // namespace cond