1 #ifndef CondCore_CondDB_Session_h 2 #define CondCore_CondDB_Session_h 39 namespace persistency {
41 class SessionConfiguration;
50 void start(
bool readOnly =
true);
69 explicit Session(
const std::shared_ptr<SessionImpl>& sessionImpl);
87 bool existsDatabase();
90 void createDatabase();
110 std::vector<std::tuple<cond::Time_t, cond::Hash> >&
range);
115 template <
typename T>
128 const boost::posix_time::ptime& creationTime);
142 template <
typename T>
145 const boost::posix_time::ptime& creationTime = boost::posix_time::microsec_clock::universal_time());
147 template <
typename T>
148 std::unique_ptr<T> fetchPayload(
const cond::Hash& payloadHash);
151 const std::pair<Binary, Binary>& payloadAndStreamerInfoData,
152 const boost::posix_time::ptime& creationTime);
154 bool fetchPayloadData(
const cond::Hash& payloadHash,
180 coral::ISessionProxy& coralSession();
182 coral::ISchema& nominalSchema();
189 template <
typename T>
193 return createIov(cond::demangledName(
typeid(
T)), tag, timeType, synchronizationType);
196 template <
typename T>
197 inline cond::Hash Session::storePayload(
const T&
payload,
const boost::posix_time::ptime& creationTime) {
198 std::string payloadObjectType = cond::demangledName(
typeid(payload));
201 ret = storePayloadData(payloadObjectType,
serialize(payload), creationTime);
204 throwException(
"Payload of type " + payloadObjectType +
" could not be stored. " + em,
"Session::storePayload");
211 const boost::posix_time::ptime& creationTime) {
215 ret = storePayloadData(payloadObjectType,
serialize(payload), creationTime);
218 throwException(
"Payload of type " + payloadObjectType +
" could not be stored. " + em,
"Session::storePayload");
223 template <
typename T>
224 inline std::unique_ptr<T> Session::fetchPayload(
const cond::Hash& payloadHash) {
228 if (!fetchPayloadData(payloadHash, payloadType, payloadData, streamerInfoData))
229 throwException(
"Payload with id " + payloadHash +
" has not been found in the database.",
230 "Session::fetchPayload");
231 std::unique_ptr<T>
ret;
233 ret = deserialize<T>(
payloadType, payloadData, streamerInfoData);
236 throwException(
"Payload of type " + payloadType +
" with id " + payloadHash +
" could not be loaded. " + em,
237 "Session::fetchPayload");
248 void start(
bool readOnly =
true);
Base exception class for the object to relational access.
std::pair< Binary, Binary > serialize(const T &payload)
ret
prodAgent to be discontinued
Transaction & m_transaction
char const * what() const override
unsigned long long Time_t
Transaction m_transaction
void throwException(const std::string &message, const std::string &methodName)
std::shared_ptr< SessionImpl > m_session