CMS 3D CMS Logo

List of all members | Public Member Functions | Private Attributes
cond::persistency::KeyList Class Reference

#include <KeyList.h>

Public Member Functions

template<typename T >
std::shared_ptr< Tget (size_t n) const
 
void init (IOVProxy iovProxy)
 
void load (const std::vector< unsigned long long > &keys)
 
size_t size () const
 

Private Attributes

std::map< size_t, std::pair< std::string, std::pair< cond::Binary, cond::Binary > > > m_data
 
std::vector< std::shared_ptr< void > > m_objects
 
IOVProxy m_proxy
 

Detailed Description

Definition at line 32 of file KeyList.h.

Member Function Documentation

template<typename T >
std::shared_ptr<T> cond::persistency::KeyList::get ( size_t  n) const
inline

Definition at line 40 of file KeyList.h.

References mps_fire::i, m_data, m_objects, gen::n, size(), and cond::persistency::throwException().

Referenced by Options.Options::__getitem__(), betterConfigParser.BetterConfigParser::__updateDict(), DTUserKeyedConfigPopConAnalyzer::analyze(), DTKeyedConfigPopConAnalyzer::analyze(), DTKeyedConfigDBDump::analyze(), data_sources.json_list::as_dicts(), data_sources.json_list::as_table(), DTUserKeyedConfigHandler::chkConfigList(), DTKeyedConfigHandler::chkConfigList(), util.rrapi.RRApi::columns(), rrapi.RRApi::columns(), util.rrapi.RRApi::count(), rrapi.RRApi::count(), rrapi.RRApi::data(), util.rrapi.RRApi::data(), data_sources.json_list::first(), DTKeyedConfigCache::get(), betterConfigParser.BetterConfigParser::getCompares(), betterConfigParser.BetterConfigParser::getGeneral(), betterConfigParser.BetterConfigParser::getResultingSection(), data_sources.json_list::indices(), data_sources.json_list::last(), rrapi.RRApi::report(), util.rrapi.RRApi::report(), util.rrapi.RRApi::reports(), rrapi.RRApi::reports(), util.rrapi.RRApi::tables(), rrapi.RRApi::tables(), rrapi.RRApi::tags(), util.rrapi.RRApi::tags(), rrapi.RRApi::templates(), util.rrapi.RRApi::templates(), util.rrapi.RRApi::workspaces(), and rrapi.RRApi::workspaces().

40  {
41  if( n >= size() ) throwException( "Index outside the bounds of the key array.",
42  "KeyList::get");
43  if( !m_objects[n] ){
44  auto i = m_data.find( n );
45  if( i != m_data.end() ){
46  m_objects[n] = deserialize<T>( i->second.first, i->second.second.first, i->second.second.second );
47  m_data.erase( n );
48  } else {
49  throwException( "Payload for index "+std::to_string(n)+" has not been found.",
50  "KeyList::get");
51  }
52  }
53  return std::static_pointer_cast<T>( m_objects[n] );
54  }
size_t size() const
Definition: KeyList.h:56
std::vector< std::shared_ptr< void > > m_objects
Definition: KeyList.h:63
std::map< size_t, std::pair< std::string, std::pair< cond::Binary, cond::Binary > > > m_data
Definition: KeyList.h:62
long double T
void throwException(const std::string &message, const std::string &methodName)
Definition: Exception.cc:14
void cond::persistency::KeyList::init ( IOVProxy  iovProxy)

Definition at line 8 of file KeyList.cc.

References m_data, m_objects, and m_proxy.

8  {
9  m_proxy = iovProxy;
10  m_data.clear();
11  m_objects.clear();
12  }
std::vector< std::shared_ptr< void > > m_objects
Definition: KeyList.h:63
std::map< size_t, std::pair< std::string, std::pair< cond::Binary, cond::Binary > > > m_data
Definition: KeyList.h:62
void cond::persistency::KeyList::load ( const std::vector< unsigned long long > &  keys)

Definition at line 14 of file KeyList.cc.

References cond::persistency::Transaction::commit(), cond::persistency::IOVProxy::end(), cond::persistency::Session::fetchPayloadData(), cond::persistency::IOVProxy::find(), mps_fire::i, m_data, m_objects, m_proxy, AlCaHLTBitMon_ParallelJobs::p, alignCSCRings::s, cond::persistency::IOVProxy::session(), cond::persistency::Transaction::start(), cond::throwException(), and cond::persistency::Session::transaction().

Referenced by DTKeyedConfigDBDump::analyze(), DTUserKeyedConfigHandler::chkConfigList(), DTKeyedConfigHandler::chkConfigList(), DTKeyedConfigCache::get(), MatrixToProcess.MatrixToProcess::getProcess(), MatrixToProcess.MatrixToProcess::listAll(), and ConfigBuilder.ConfigBuilder::prepare_FILTER().

14  {
15  std::shared_ptr<SessionImpl> simpl = m_proxy.session();
16  if( !simpl.get() ) cond::throwException("The KeyList has not been initialized.","KeyList::load");
17  Session s( simpl );
18  s.transaction().start( true );
19  m_data.clear();
20  m_objects.resize(keys.size());
21  for (size_t i=0; i<keys.size(); ++i) {
22  m_objects[i].reset();
23  if (keys[i]!=0) {
24  auto p = m_proxy.find(keys[i]);
25  if ( p!= m_proxy.end()) {
26  auto item = m_data.insert( std::make_pair( i, std::make_pair("",std::make_pair(cond::Binary(),cond::Binary()) ) ) );
27  if( ! s.fetchPayloadData( (*p).payloadId, item.first->second.first,
28  item.first->second.second.first, item.first->second.second.second ) )
29  cond::throwException("The Iov contains a broken payload reference.","KeyList::load");
30  }
31  }
32  }
33  s.transaction().commit();
34  }
std::vector< std::shared_ptr< void > > m_objects
Definition: KeyList.h:63
void throwException(const std::string &message, const std::string &methodName)
Definition: Exception.cc:21
std::map< size_t, std::pair< std::string, std::pair< cond::Binary, cond::Binary > > > m_data
Definition: KeyList.h:62
Iterator find(cond::Time_t time)
Definition: IOVProxy.cc:320
Iterator end() const
Definition: IOVProxy.cc:297
const std::shared_ptr< SessionImpl > & session() const
Definition: IOVProxy.cc:386
size_t cond::persistency::KeyList::size ( void  ) const
inline

Member Data Documentation

std::map<size_t,std::pair<std::string,std::pair<cond::Binary,cond::Binary> > > cond::persistency::KeyList::m_data
mutableprivate

Definition at line 62 of file KeyList.h.

Referenced by get(), init(), and load().

std::vector<std::shared_ptr<void> > cond::persistency::KeyList::m_objects
mutableprivate

Definition at line 63 of file KeyList.h.

Referenced by get(), init(), load(), and size().

IOVProxy cond::persistency::KeyList::m_proxy
private

Definition at line 60 of file KeyList.h.

Referenced by init(), and load().