1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
#ifndef CondCore_CondDB_PayloadReader_h
#define CondCore_CondDB_PayloadReader_h
//
// Package: CondDB
// Class : PayloadReader
//
/**\class PayloadReader PayloadReader.h CondCore/CondDB/interface/PayloadReader.h
Description: service for accessing conditions payloads from DB.
*/
//
// Author: Giacomo Govi
// Created: Jul 2015
//
#include "CondCore/CondDB/interface/ConnectionPool.h"
#include <memory>
namespace cond {
namespace persistency {
class PayloadReader {
public:
static constexpr const char* const PRODUCTION_DB = "oracle://cms_orcon_adg/CMS_CONDITIONS";
public:
// default constructor
PayloadReader();
//
PayloadReader(const PayloadReader& rhs);
//
virtual ~PayloadReader();
//
PayloadReader& operator=(const PayloadReader& rhs);
//
ConnectionPool& connection();
//
void open(const std::string& connectionString);
//
void open();
//
void close();
//
template <typename T>
std::shared_ptr<T> fetch(const cond::Hash& payloadHash);
private:
std::shared_ptr<ConnectionPool> m_connection;
Session m_session;
};
template <typename T>
inline std::shared_ptr<T> PayloadReader::fetch(const cond::Hash& payloadHash) {
std::shared_ptr<T> ret;
if (m_session.connectionString().empty())
open(PRODUCTION_DB);
m_session.transaction().start(true);
ret = m_session.fetchPayload<T>(payloadHash);
m_session.transaction().commit();
return ret;
}
} // namespace persistency
} // namespace cond
#endif // CondCore_CondDB_PayloadReader_h
|