ATLAS Offline Software
Loading...
Searching...
No Matches
RDBAccessSvc.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3*/
4
13
14#ifndef RDBACCESSSVC_RDBACCESSSVC_H
15#define RDBACCESSSVC_RDBACCESSSVC_H
16
18#include "RDBRecordset.h"
19
21
22#include <string>
23#include <map>
24
25class ISvcLocator;
26class RDBRecordset;
27
28namespace coral
29{
30 class ISessionProxy;
31}
32
33template <class TYPE> class SvcFactory;
34
35
36// Recordsets of single connection
37typedef std::map<std::string, IRDBRecordset_ptr> RecordsetPtrMap;
38
39// Pointers to recordset maps by connection name
40typedef std::map<std::string, RecordsetPtrMap> RecordsetPtrsByConn;
41
42// Session map
43typedef std::map<std::string, coral::ISessionProxy*> SessionMap;
44
45// Lookup table for global tag contents quick access
46typedef std::pair<std::string, std::string> TagNameId;
47typedef std::map<std::string, TagNameId> TagNameIdByNode;
48typedef std::map<std::string, TagNameIdByNode*> GlobalTagLookupMap; // Key - <Global_Tag_Name>::<Connection>
49
56
57class RDBAccessSvc final : public extends<AthService, IRDBAccessSvc>
58{
59 public:
61 RDBAccessSvc(const std::string& name, ISvcLocator* svc);
62
63 StatusCode initialize() override;
64 StatusCode finalize() override;
65
70 bool connect(const std::string& connName) override;
71
75 bool disconnect(const std::string& connName) override;
76
79 bool shutdown(const std::string& connName) override;
80
87 IRDBRecordset_ptr getRecordsetPtr(const std::string& node
88 , const std::string& tag
89 , const std::string& tag2node=""
90 , const std::string& connName = "ATLASDD") override;
91
98 std::string getChildTag(const std::string& childNode
99 , const std::string& parentTag
100 , const std::string& parentNode
101 , const std::string& connName) override;
102
103 std::string getChildTag(const std::string& childNode
104 , const std::string& parentTag
105 , const std::string& parentNode
106 , const std::string& connName
107 , bool force);
108
109 std::unique_ptr<IRDBQuery> getQuery(const std::string& node
110 , const std::string& tag
111 , const std::string& tag2node
112 , const std::string& connName) override;
113
114 void getTagDetails(RDBTagDetails& tagDetails
115 , const std::string& tag
116 , const std::string& connName = "ATLASDD") override;
117
118 void getAllLeafNodes(std::vector<std::string>& list
119 , const std::string& connName = "ATLASDD");
120
121 std::vector<std::string> getLockedSupportedTags(const std::string& supportedFlag
122 , const std::string& connName = "ATLASDD");
123
124 coral::ISessionProxy* getSession(const std::string& connName = "ATLASDD");
125
126private:
128 std::map<std::string, unsigned int> m_openConnections;
129
132
134 std::mutex m_sessionMutex;
135
136 bool shutdown_connection(const std::string& connName);
137};
138
139#endif
Definition of the abstract IRDBAccessSvc interface.
coral::AttributeList RDBTagDetails
std::shared_ptr< IRDBRecordset > IRDBRecordset_ptr
std::map< std::string, RecordsetPtrMap > RecordsetPtrsByConn
std::map< std::string, coral::ISessionProxy * > SessionMap
std::map< std::string, TagNameId > TagNameIdByNode
std::map< std::string, IRDBRecordset_ptr > RecordsetPtrMap
std::pair< std::string, std::string > TagNameId
std::map< std::string, TagNameIdByNode * > GlobalTagLookupMap
Definition of RDBRecordset class.
std::vector< std::string > getLockedSupportedTags(const std::string &supportedFlag, const std::string &connName="ATLASDD")
bool connect(const std::string &connName) override
Connect to the relational DB.
bool shutdown(const std::string &connName) override
Closes the connection regardless of the counter value.
bool disconnect(const std::string &connName) override
If the counnection counter==1 closes the connection.
std::mutex m_sessionMutex
SessionMap m_sessions
IRDBRecordset_ptr getRecordsetPtr(const std::string &node, const std::string &tag, const std::string &tag2node="", const std::string &connName="ATLASDD") override
Provides access to the Recordset object containing HVS-tagged data.
bool shutdown_connection(const std::string &connName)
StatusCode finalize() override
RecordsetPtrsByConn m_recordsetptrs
GlobalTagLookupMap m_globalTagLookup
RDBAccessSvc(const std::string &name, ISvcLocator *svc)
Standard Service Constructor.
void getAllLeafNodes(std::vector< std::string > &list, const std::string &connName="ATLASDD")
void getTagDetails(RDBTagDetails &tagDetails, const std::string &tag, const std::string &connName="ATLASDD") override
std::mutex m_recordsetMutex
std::map< std::string, unsigned int > m_openConnections
StatusCode initialize() override
std::string getChildTag(const std::string &childNode, const std::string &parentTag, const std::string &parentNode, const std::string &connName) override
Gets the tag name for the node by giving its parent node tag.
std::unique_ptr< IRDBQuery > getQuery(const std::string &node, const std::string &tag, const std::string &tag2node, const std::string &connName) override
coral::ISessionProxy * getSession(const std::string &connName="ATLASDD")
RDBRecordset is an implementation of IRDBRecordset interface.
Definition node.h:24