CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_0/src/CondCore/IOVService/src/KeyList.cc

Go to the documentation of this file.
00001 #include "CondCore/IOVService/interface/KeyList.h"
00002 #include "CondCore/DBCommon/interface/DbTransaction.h"
00003 
00004 
00005 
00006 namespace cond {
00007 
00008   KeyList::KeyList(IOVKeysDescription const * idescr) : m_description(idescr){}
00009   
00010   void KeyList::load(std::vector<unsigned long long> const & keys) {
00011     m_sequence.db().transaction().start(true);
00012     m_data.resize(keys.size());
00013     for (size_t i=0; i<keys.size(); ++i) {
00014       m_data[i].reset();
00015       if (keys[i]!=0) {
00016         IOVSequence::const_iterator p = m_sequence.iov().findSince(keys[i]);
00017         if (p!=m_sequence.iov().iovs().end()) { 
00018           m_data[i] = m_sequence.db().getTypedObject<Base>( (*p).token() );
00019         }
00020       }
00021     }
00022     m_sequence.db().transaction().commit();
00023   }
00024 
00025 
00026   BaseKeyed const * KeyList::elem(int n) const {
00027     if (!m_data[n]) return 0;
00028     return m_data[n].get();
00029   }
00030   
00031 
00032 }