ATLAS Offline Software
Public Member Functions | Protected Member Functions | Private Attributes | List of all members
TrigConf::TrigDBLoader Class Reference

Loader of trigger configurations from Json files. More...

#include <TrigDBLoader.h>

Inheritance diagram for TrigConf::TrigDBLoader:
Collaboration diagram for TrigConf::TrigDBLoader:

Public Member Functions

 TrigDBLoader (const std::string &loaderName, const std::string &connection)
 Constructor. More...
 
virtual ~TrigDBLoader () override
 Destructor - cannot be defined here because QueryDefinition is an incomplete type. More...
 
size_t schemaVersion (coral::ISessionProxy *session) const
 access to TriggerDB schema version More...
 
bool writeRawFile (const coral::Blob &data, const std::string &outFileName) const
 write data blob into file This can be used to write the DB content to file without going through a ptree More...
 
void setLevel (MSGTC::Level lvl)
 
MSGTC::Level outputLevel () const
 
bool msgLvl (const MSGTC::Level lvl) const
 Test the output level. More...
 
MsgStreamTCmsg () const
 The standard message stream. More...
 
MsgStreamTCmsg (const MSGTC::Level lvl) const
 The standard message stream. More...
 

Protected Member Functions

std::unique_ptr< coral::ISessionProxy > createDBSession () const
 create (if needed) DB session and return the session proxy More...
 
QueryDefinition getQueryDefinition (size_t schemaVersion, const std::map< size_t, QueryDefinition > &queries) const
 return query for given schemaVersion from possible queries More...
 

Private Attributes

std::string m_connection {"TRIGGERDB"}
 
int m_retrialPeriod {0}
 
int m_retrialTimeout {0}
 
int m_connectionTimeout {0}
 
boost::thread_specific_ptr< MsgStreamTCm_msg_tls
 MsgStreamTC instance (a std::cout like with print-out levels) More...
 
std::string m_name
 

Detailed Description

Loader of trigger configurations from Json files.

Definition at line 33 of file TrigDBLoader.h.

Constructor & Destructor Documentation

◆ TrigDBLoader()

TrigConf::TrigDBLoader::TrigDBLoader ( const std::string &  loaderName,
const std::string &  connection 
)

Constructor.

Definition at line 21 of file TrigDBLoader.cxx.

21  :
22  TrigConfMessaging(loaderName),
23  m_connection(connection)
24 {}

◆ ~TrigDBLoader()

TrigConf::TrigDBLoader::~TrigDBLoader ( )
overridevirtualdefault

Destructor - cannot be defined here because QueryDefinition is an incomplete type.

Member Function Documentation

◆ createDBSession()

std::unique_ptr< coral::ISessionProxy > TrigConf::TrigDBLoader::createDBSession ( ) const
protected

create (if needed) DB session and return the session proxy

Definition at line 94 of file TrigDBLoader.cxx.

94  {
95 
96  coral::ConnectionService connSvc;
97  coral::IConnectionServiceConfiguration& csc = connSvc.configuration();
98  csc.setConnectionRetrialPeriod( m_retrialPeriod );
99  csc.setConnectionRetrialTimeOut( m_retrialTimeout );
100  csc.setConnectionTimeOut( m_connectionTimeout );
101 
102  /* TODO
103  if(csc.replicaSortingAlgorithm() == nullptr) { // likely to be standalone, create our own
104  TRG_MSG_INFO("Create own ReplicaSortingAlgorithm");
105  m_replicaSorter = new TrigConf::ReplicaSorter();
106  csc.setReplicaSortingAlgorithm(*m_replicaSorter);
107  }
108  */
109 
110  TRG_MSG_INFO("Connecting to " << m_connection);
111 
112  auto proxy = std::unique_ptr<coral::ISessionProxy>( connSvc.connect(m_connection, coral::AccessMode::ReadOnly) );
113 
114  TRG_MSG_INFO("Opened session " << m_connection << " with retrialPeriod/retrialTimeout/connectionTimeout: "
115  << m_retrialPeriod << "/" << m_retrialTimeout << "/" << m_connectionTimeout);
116 
117  return proxy;
118 }

◆ getQueryDefinition()

TrigConf::QueryDefinition TrigConf::TrigDBLoader::getQueryDefinition ( size_t  schemaVersion,
const std::map< size_t, QueryDefinition > &  queries 
) const
protected

return query for given schemaVersion from possible queries

Definition at line 122 of file TrigDBLoader.cxx.

124 {
125  // find the largest version key in the map of defined queries that is <= the schemaVersion
126  size_t maxDefVersion = 0;
127  for(auto & entry : queries) {
128  size_t vkey = entry.first;
129  if(vkey>maxDefVersion and vkey<=schemaVersion) {
130  maxDefVersion = vkey;
131  }
132  }
133  // if nothing found, throw an error
134  if( maxDefVersion==0 ) {
135  TRG_MSG_ERROR("No query for schema version " << schemaVersion << " defined" );
136  throw TrigConf::NoQueryException( "No query available for schema version" + std::to_string(schemaVersion) );
137  }
138  return queries.at(maxDefVersion);
139 }

◆ msg() [1/2]

MsgStreamTC & TrigConf::TrigConfMessaging::msg ( ) const
inlineinherited

The standard message stream.

Returns a reference to the message stream May not be invoked before sysInitialize() has been invoked.

Definition at line 81 of file TrigConfMessaging.h.

82  {
83  MsgStreamTC* ms = m_msg_tls.get();
84  if (!ms) {
85  ms = new MsgStreamTC(m_name);
86  m_msg_tls.reset(ms);
87  }
88  return *ms;
89  }

◆ msg() [2/2]

MsgStreamTC & TrigConf::TrigConfMessaging::msg ( const MSGTC::Level  lvl) const
inlineinherited

The standard message stream.

Returns a reference to the default message stream May not be invoked before sysInitialize() has been invoked.

Definition at line 91 of file TrigConfMessaging.h.

92  {
93  return msg() << lvl;
94  }

◆ msgLvl()

bool TrigConf::TrigConfMessaging::msgLvl ( const MSGTC::Level  lvl) const
inlineinherited

Test the output level.

Parameters
lvlThe message level to test against
Returns
boolean Indicting if messages at given level will be printed
Return values
trueMessages at level "lvl" will be printed

Definition at line 70 of file TrigConfMessaging.h.

71  {
72  if (msg().level() <= lvl) {
73  msg() << lvl;
74  return true;
75  }
76  else {
77  return false;
78  }
79  }

◆ outputLevel()

MSGTC::Level TrigConf::TrigDBLoader::outputLevel ( ) const
inline

Definition at line 54 of file TrigDBLoader.h.

54 { return msg().level(); }

◆ schemaVersion()

size_t TrigConf::TrigDBLoader::schemaVersion ( coral::ISessionProxy *  session) const

access to TriggerDB schema version

Returns
version of the DB schema (0 - no version, >0 - schema version)

Definition at line 38 of file TrigDBLoader.cxx.

38  {
39 
40  static const std::string versionTagPrefix("Trigger-Run3-Schema-v");
41 
42  // if database has no schema version, then we return 0
43  if(! session->nominalSchema().existsTable("TRIGGER_SCHEMA") ) {
44  throw std::runtime_error( "Trigger schema has no schema version table" );
45  }
46 
48  // tables
49  qdef.addToTableList ( "TRIGGER_SCHEMA" );
50  // attributes
51  qdef.extendOutput<std::string>( "TS_TAG" );
52 
53  auto query = qdef.createQuery( session );
54  auto & cursor = query->execute();
55  if ( ! cursor.next() ) {
56  throw std::runtime_error( "Trigger schema has schema version table but it is empty" );
57  }
58 
59  const coral::AttributeList& row = cursor.currentRow();
60  std::string versionTag = row["TS_TAG"].data<std::string>();
61  if( ! startswith(versionTag, versionTagPrefix)) {
62  throw std::runtime_error( "Tag format error: Trigger schema version tag " + versionTag + "does not start with " + versionTagPrefix);
63  }
64 
65  std::string vstr = versionTag.substr(versionTagPrefix.size()); // the part of the string containing the version
66  size_t schemaVersion{0};
67  try {
68  schemaVersion = std::stoi(vstr);
69  }
70  catch (const std::invalid_argument& ia) {
71  TRG_MSG_ERROR("Invalid argument when interpreting the version part " << vstr << " of schema tag " << versionTag << ". " << ia.what());
72  throw;
73  }
74 
75  TRG_MSG_INFO("TriggerDB schema version: " << schemaVersion);
76  return schemaVersion;
77 }

◆ setLevel()

void TrigConf::TrigDBLoader::setLevel ( MSGTC::Level  lvl)
inline

Definition at line 52 of file TrigDBLoader.h.

52 { msg().setLevel(lvl); }

◆ writeRawFile()

bool TrigConf::TrigDBLoader::writeRawFile ( const coral::Blob &  data,
const std::string &  outFileName 
) const

write data blob into file This can be used to write the DB content to file without going through a ptree

Definition at line 80 of file TrigDBLoader.cxx.

81 {
82  if( outFileName.empty() ) {
83  return true;
84  }
85  std::ofstream outFile;
86  outFile.open( outFileName, std::ofstream::binary );
87  outFile.write( static_cast<const char*> ( data.startingAddress()), data.size() );
88  outFile.close();
89  TRG_MSG_INFO("Wrote file " << outFileName);
90  return true;
91 }

Member Data Documentation

◆ m_connection

std::string TrigConf::TrigDBLoader::m_connection {"TRIGGERDB"}
private

Definition at line 68 of file TrigDBLoader.h.

◆ m_connectionTimeout

int TrigConf::TrigDBLoader::m_connectionTimeout {0}
private

Definition at line 71 of file TrigDBLoader.h.

◆ m_msg_tls

boost::thread_specific_ptr<MsgStreamTC> TrigConf::TrigConfMessaging::m_msg_tls
mutableprivateinherited

MsgStreamTC instance (a std::cout like with print-out levels)

Definition at line 66 of file TrigConfMessaging.h.

◆ m_name

std::string TrigConf::TrigConfMessaging::m_name
privateinherited

Definition at line 67 of file TrigConfMessaging.h.

◆ m_retrialPeriod

int TrigConf::TrigDBLoader::m_retrialPeriod {0}
private

Definition at line 69 of file TrigDBLoader.h.

◆ m_retrialTimeout

int TrigConf::TrigDBLoader::m_retrialTimeout {0}
private

Definition at line 70 of file TrigDBLoader.h.


The documentation for this class was generated from the following files:
TRG_MSG_ERROR
#define TRG_MSG_ERROR(x)
Definition: Trigger/TrigConfiguration/TrigConfBase/TrigConfBase/MsgStreamMacros.h:29
query_example.row
row
Definition: query_example.py:24
data
char data[hepevt_bytes_allocation_ATLAS]
Definition: HepEvt.cxx:11
StateLessPT_NewConfig.proxy
proxy
Definition: StateLessPT_NewConfig.py:392
TrigConf::TrigConfMessaging::m_msg_tls
boost::thread_specific_ptr< MsgStreamTC > m_msg_tls
MsgStreamTC instance (a std::cout like with print-out levels)
Definition: TrigConfMessaging.h:66
TrigConf::TrigDBLoader::schemaVersion
size_t schemaVersion(coral::ISessionProxy *session) const
access to TriggerDB schema version
Definition: TrigDBLoader.cxx:38
TrigConf::TrigDBLoader::m_connection
std::string m_connection
Definition: TrigDBLoader.h:68
python.PyKernel.AttributeList
AttributeList
Definition: PyKernel.py:36
python.SystemOfUnits.ms
int ms
Definition: SystemOfUnits.py:132
TrigConf::QueryDefinition
Definition: TrigDBHelper.h:28
python.iconfTool.models.loaders.level
level
Definition: loaders.py:20
TrigConf::QueryDefinition::extendOutput
void extendOutput(const std::string &fieldName)
Definition: TrigDBHelper.h:65
query
Definition: query.py:1
DumpGeoConfig.outFileName
string outFileName
Definition: DumpGeoConfig.py:252
TrigConf::TrigConfMessaging::m_name
std::string m_name
Definition: TrigConfMessaging.h:67
TrigConf::TrigConfMessaging::msg
MsgStreamTC & msg() const
The standard message stream.
Definition: TrigConfMessaging.h:81
TrigConf::TrigConfMessaging::TrigConfMessaging
TrigConfMessaging()=delete
TrigConf::MsgStreamTC::level
MSGTC::Level level()
Return message level of stream.
Definition: Trigger/TrigConfiguration/TrigConfBase/TrigConfBase/MsgStream.h:53
TrigConf::QueryDefinition::createQuery
std::unique_ptr< coral::IQuery > createQuery(coral::ISessionProxy *session)
Definition: TrigDBHelper.cxx:10
TrigConf::NoQueryException
Definition: Trigger/TrigConfiguration/TrigConfIO/TrigConfIO/Exceptions.h:26
TRG_MSG_INFO
#define TRG_MSG_INFO(x)
Definition: Trigger/TrigConfiguration/TrigConfBase/TrigConfBase/MsgStreamMacros.h:27
DQPostProcessTest.outFile
outFile
Comment Out Those You do not wish to run.
Definition: DQPostProcessTest.py:37
GetAllXsec.entry
list entry
Definition: GetAllXsec.py:132
TrigConf::TrigDBLoader::m_retrialTimeout
int m_retrialTimeout
Definition: TrigDBLoader.h:70
TrigConf::TrigDBLoader::m_connectionTimeout
int m_connectionTimeout
Definition: TrigDBLoader.h:71
ActsTrk::to_string
std::string to_string(const DetectorType &type)
Definition: GeometryDefs.h:34
TrigConf::TrigDBLoader::m_retrialPeriod
int m_retrialPeriod
Definition: TrigDBLoader.h:69
query_example.cursor
cursor
Definition: query_example.py:21
TrigConf::MsgStreamTC::setLevel
void setLevel(MSGTC::Level lvl)
Set message level of stream.
Definition: Trigger/TrigConfiguration/TrigConfBase/Root/MsgStream.cxx:52
TrigConf::QueryDefinition::addToTableList
void addToTableList(const std::string &table, const std::string &table_short="")
Definition: TrigDBHelper.cxx:42