ATLAS Offline Software
Loading...
Searching...
No Matches
DbDatabase.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3*/
4
5//====================================================================
6// DbDatabase and related class definitions
7//--------------------------------------------------------------------
8//
9// Package : StorageSvc (The POOL project)
10// @author M.Frank
11//====================================================================
12#ifndef POOL_DBDATABASE_H
13#define POOL_DBDATABASE_H
14
15// Framework include files
18#include "StorageSvc/pool.h"
21
22// STL include files
23#include <vector>
24#include <string>
25#include <map>
26
27class StatusCode;
28
29/*
30 * POOL namespace declaration
31 */
32namespace pool {
33
34 // Forward declarations
35 class IOODatabase;
36 class IDbDatabase;
37 class IDbContainer;
38 class DbDomain;
39 class DbDatabase;
40 class DbDatabaseObj;
41 class DbContainer;
42 class DbContainerObj;
43 class DbOption;
44 class DbTypeInfo;
45 typedef const class Shape *ShapeH;
46
55 class DbDatabase : public DbHandleBase<DbDatabaseObj> {
56 protected:
58 typedef std::pair<std::string, std::string> Parameter;
60 typedef std::vector< Parameter > Parameters;
61
64 public:
66 explicit DbDatabase(const DbType& typ=POOL_StorageType) { m_type = typ; }
68 DbDatabase(const DbDatabase& cp) : Base() { switchPtr(cp.m_ptr); }
72 virtual ~DbDatabase() { switchPtr(0); }
75 if ( &copy != this ) {
76 m_type = copy.m_type;
77 switchPtr( copy.m_ptr );
78 }
79 return *this;
80 }
81
82 DbDatabase& operator=(const int /* nuller */ ) {
83 switchPtr(0);
84 return *this;
85 }
86
87 // Move
89 {
90 setPtr (cp.m_ptr);
91 setType (cp.m_type);
92 cp.setPtr (nullptr);
93 cp.setType(DbType(0));
94 }
96 {
97 if (&cp != this) {
98 switchPtr (nullptr);
99 setPtr (cp.m_ptr);
100 setType (cp.m_type);
101 cp.setPtr (nullptr);
102 cp.setType(DbType(0));
103 }
104 return *this;
105 }
106
108 int refCount() const;
112 const std::string& name() const;
114 void setName(const std::string& nam);
116 const std::string& logon() const;
118 long long int size();
121 const IOODatabase* db() const;
123 StatusCode add(const std::string& name, DbContainerObj* cnt);
125 StatusCode remove(const DbContainerObj* cnt);
127 const DbContainerObj* find(const std::string& nam) const;
129 DbContainerObj* find(const std::string& nam);
131 const Token* token() const;
133 const DbDomain& containedIn() const;
136 bool exist(DbDomain& domH, const std::string& nam) const;
138
144 StatusCode open(DbDomain& domH,
145 const std::string& pfn,
146 const std::string& fid,
147 DbAccessMode mode = pool::READ);
149
152 StatusCode reopen(DbAccessMode mode = pool::READ);
154 StatusCode close();
156 StatusCode retire();
158 bool isOpen() const;
160
163 StatusCode transAct(Transaction::Action action);
165
168 StatusCode setOption(const DbOption& refOpt);
170
173 StatusCode getOption(DbOption& refOpt);
175 StatusCode addParam(const std::string& nam, const std::string& val);
177 int nParam();
179 StatusCode param(const std::string& nam, std::string& val);
181 StatusCode params(Parameters& vals);
182
184 StatusCode read(const Token& token, ShapeH shape, void** object);
186 StatusCode getLink(const Token::OID_t& oid, Token* pTok);
188 std::string cntName(Token& token);
190 StatusCode makeLink(Token* pToken, Token::OID_t& linkH);
192 StatusCode addShape (const DbTypeInfo* pShape);
194 const DbTypeInfo* objectShape(const RootType& typeH);
196 const DbTypeInfo* objectShape(const Guid& nam);
198 const DbTypeInfo* contShape(const std::string& nam);
200 const Token* cntToken(const std::string& cntName);
202 StatusCode containers(std::vector<const Token*>& conts, bool intern=false);
203 StatusCode containers(std::vector<IDbContainer*>& conts, bool intern=false);
205 StatusCode associations(std::vector<const Token*>& assocs);
207 StatusCode shapes(std::vector<const DbTypeInfo*>& shaps);
210 const IDbDatabase* info() const;
212 void setAge(int value);
214 int age() const;
215 };
216} // End namespace pool
217#endif // POOL_DBDatabase_H
TTypeAdapter RootType
Definition RootType.h:211
This file contains the class definition for the Token class (migrated from POOL).
This class provides a token that identifies in a unique way objects on the persistent storage.
Definition Token.h:21
Description: Definition of the object describing a database container Handle managing a DbContainerOb...
Definition DbContainer.h:49
Description: Handle managing a DbDatabaseObj, a generic Database object.
Definition DbDatabase.h:55
void switchPtr(DbDatabaseObj *obj)
Assign transient object properly (including reference counting)
StatusCode add(const std::string &name, DbContainerObj *cnt)
Add domain to session.
StatusCode param(const std::string &nam, std::string &val)
Retrieve existing parameter by name.
const DbContainerObj * find(const std::string &nam) const
Select container object in Database.
StatusCode remove(const DbContainerObj *cnt)
Find domain in session.
void setName(const std::string &nam)
Set db name (FID) after opening in case opening happened by PFN.
StatusCode close()
Close Database.
int age() const
Access age value.
DbDatabase(const DbType &typ=POOL_StorageType)
Constructor with initializing arguments.
Definition DbDatabase.h:66
DbDatabase(DbDatabase &&cp)
Definition DbDatabase.h:88
IDbDatabase * info()
Let the implementation access the internals.
IOODatabase * db()
Allow access to the Database implementation.
const DbTypeInfo * objectShape(const Guid &nam)
Retrieve persistent type information by name.
StatusCode makeLink(Token *pToken, Token::OID_t &linkH)
Add association link to link container.
StatusCode read(const Token &token, ShapeH shape, void **object)
read an object referenced by the token
StatusCode shapes(std::vector< const DbTypeInfo * > &shaps)
Allow access to all known shapes used by the database.
StatusCode getOption(DbOption &refOpt)
Access options.
void setAge(int value)
Update database age.
DbDomain & containedIn()
std::string cntName(Token &token)
Retrieve container name from link container (using token oid, rather than contID)
StatusCode addShape(const DbTypeInfo *pShape)
Add persistent shape to the Database.
const std::string & name() const
Access to db name (FID)
bool exist(DbDomain &domH, const std::string &nam) const
Check for existence of Database within domain.
DbAccessMode openMode() const
Access to access mode member.
StatusCode associations(std::vector< const Token * > &assocs)
Allow access to all known associations between containers.
DbDatabase & operator=(const DbDatabase &copy)
Assignment (copy) operator.
Definition DbDatabase.h:74
const IDbDatabase * info() const
bool isOpen() const
Check if the database was opened.
StatusCode addParam(const std::string &nam, const std::string &val)
Add a persistent parameter to the file.
const Token * cntToken(const std::string &cntName)
Access local container token (if container exists)
long long int size()
Access the size of the database: May be undefined for some technologies.
StatusCode params(Parameters &vals)
Retrieve all parameters.
StatusCode open(DbDomain &domH, const std::string &pfn, const std::string &fid, DbAccessMode mode=pool::READ)
Open Database using given domain.
StatusCode transAct(Transaction::Action action)
Commit/Rollback Database Transaction.
std::pair< std::string, std::string > Parameter
Parameter definition.
Definition DbDatabase.h:58
const DbDomain & containedIn() const
Access to domain object.
int refCount() const
Access reference counter.
const Token * token() const
Access the token of the database object.
DbDatabase(DbDatabaseObj *obj)
Constructor.
Definition DbDatabase.h:70
int nParam()
Retrieve the number of user parameters.
DbContainerObj * find(const std::string &nam)
Select container object in Database.
DbDatabase(const DbDatabase &cp)
Copy constructor.
Definition DbDatabase.h:68
const DbTypeInfo * objectShape(const RootType &typeH)
Retrieve persistent type information by class handle.
StatusCode reopen(DbAccessMode mode=pool::READ)
Re-open database with changing access permissions.
StatusCode containers(std::vector< const Token * > &conts, bool intern=false)
Allow access to all known containers.
StatusCode containers(std::vector< IDbContainer * > &conts, bool intern=false)
const std::string & logon() const
Access to db logon string.
StatusCode retire()
End database access, but still leave database accessible.
const DbTypeInfo * contShape(const std::string &nam)
Retrieve persistent type information by container.
std::vector< Parameter > Parameters
Parameter container definition.
Definition DbDatabase.h:60
StatusCode setOption(const DbOption &refOpt)
Set options.
const IOODatabase * db() const
StatusCode getLink(const Token::OID_t &oid, Token *pTok)
Expand OID into a full Token, based on the Links table.
virtual ~DbDatabase()
Standard destructor.
Definition DbDatabase.h:72
DbDatabase & operator=(const int)
Assignment operator to reset handle using 0.
Definition DbDatabase.h:82
Description:
Definition DbDomain.h:47
void setPtr(DbDatabaseObj *ptr)
void setType(const DbType &typ)
DbHandleBase< _DataType > Base
Description: Definition an option to be supplied to database objects.
Definition DbOption.h:37
Definition of class DbTypeInfo.
Definition DbTypeInfo.h:49
IDbDatabase interface.
Definition IDbDatabase.h:42
Description:
Definition Shape.h:35
pool namespace
Definition libname.h:15
const class Shape * ShapeH
static const DbType POOL_StorageType
Definition DbType.h:98