File indexing completed on 2024-04-06 12:01:39
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016 #include "CondCore/ESSources/interface/ProductResolverFactory.h"
0017 #include "CondCore/ESSources/interface/ProductResolver.h"
0018
0019 cond::ProductResolverWrapperBase::ProductResolverWrapperBase() {}
0020
0021 cond::ProductResolverWrapperBase::~ProductResolverWrapperBase() {}
0022
0023 void cond::ProductResolverWrapperBase::addInfo(std::string const& il, std::string const& cs, std::string const& tag) {
0024 m_label = il;
0025 m_connString = cs;
0026 m_tag = tag;
0027 }
0028
0029 void cond::ProductResolverWrapperBase::loadTag(std::string const& tag) {
0030 m_session.transaction().start(true);
0031 m_iovProxy = m_session.readIov(tag);
0032 m_session.transaction().commit();
0033 m_currentIov.clear();
0034 m_requests = std::make_shared<std::vector<cond::Iov_t>>();
0035 }
0036
0037 void cond::ProductResolverWrapperBase::loadTag(std::string const& tag, boost::posix_time::ptime const& snapshotTime) {
0038 m_session.transaction().start(true);
0039 m_iovProxy = m_session.readIov(tag, snapshotTime);
0040 m_session.transaction().commit();
0041 m_currentIov.clear();
0042 m_requests = std::make_shared<std::vector<cond::Iov_t>>();
0043 }
0044
0045 void cond::ProductResolverWrapperBase::reload() {
0046 std::string tag = m_iovProxy.tagInfo().name;
0047 if (!tag.empty())
0048 loadTag(tag);
0049 }
0050
0051 cond::ValidityInterval cond::ProductResolverWrapperBase::setIntervalFor(Time_t time) {
0052 if (!m_currentIov.isValidFor(time)) {
0053 m_currentIov.clear();
0054 m_session.transaction().start(true);
0055 m_currentIov = m_iovProxy.getInterval(time);
0056 m_session.transaction().commit();
0057 }
0058 return cond::ValidityInterval(m_currentIov.since, m_currentIov.till);
0059 }
0060
0061 EDM_REGISTER_PLUGINFACTORY(cond::ProductResolverFactory, cond::pluginCategory());
0062
0063 namespace cond {
0064 const char* pluginCategory() { return "CondProductResolverFactory"; }
0065 }