ATLAS Offline Software
IDbContainer.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 //
6 // Package : pool/StorageSvc (The pool framework)
7 //
8 // @author M.Frank
9 //
10 //====================================================================
11 #ifndef POOL_IDBCONTAINER_H
12 #define POOL_IDBCONTAINER_H
13 
14 // Framework include files
17 #include "StorageSvc/Transaction.h"
18 
19 #include <vector>
20 #include <cstdint>
21 
22 /*
23  * POOL namespace declaration
24  */
25 namespace pool {
26 
27  // Forward declarations
28  class DbTypeInfo;
29  class DbDatabase;
30  class DbContainer;
31  class DbOption;
32  class DbSelect;
33 
34  typedef const class Shape *ShapeH;
35 
46  class IDbContainer {
47  protected:
49  virtual ~IDbContainer() { }
50 
51  public:
53  virtual void release() = 0;
55  virtual uint64_t size() = 0;
57  virtual std::string name() const = 0;
59  virtual DbStatus setOption(const DbOption& refOpt) = 0;
61  virtual DbStatus getOption(DbOption& refOpt) = 0;
63  virtual void* allocate( unsigned long siz,
64  DbContainer& cntH,
65  ShapeH shape) = 0;
67  virtual DbStatus allocate(DbContainer& cntH,
68  const void* object,
69  ShapeH shape,
70  Token::OID_t& oid) = 0;
72  virtual DbStatus free( void* ptr,
73  DbContainer& cntH) = 0;
74 
76  virtual uint64_t nextRecordId() = 0;
78  virtual void useNextRecordId(uint64_t) = 0;
79 
81  virtual DbStatus close() = 0;
83  virtual DbStatus open( DbDatabase& dbH,
84  const std::string& nam,
85  const DbTypeInfo* info,
86  DbAccessMode mode) = 0;
89  const std::string& nam) const = 0;
91  virtual DbStatus select(DbSelect& sel) = 0;
93  virtual DbStatus fetch(DbSelect& sel) = 0;
94 
96 
105  virtual DbStatus load( void** ptr, ShapeH shape,
106  const Token::OID_t& lnkH,
107  Token::OID_t& oid,
108  bool any_next=false) = 0;
109 
111 
117  virtual DbStatus save( DbContainer& cntH,
118  const void* object,
119  ShapeH shape,
120  Token::OID_t& linkH) = 0;
121 
125 
131  virtual DbStatus update(DbContainer& cntH,
132  const void* object,
133  ShapeH shape,
134  const DbObjectHandle<DbObject>& objH) = 0;
135 
137 
143  virtual DbStatus update(DbContainer& cntH,
144  const void* object,
145  ShapeH shape,
146  const Token::OID_t& linkH) = 0;
147 
149 
153  virtual DbStatus destroy( const Token::OID_t& linkH) = 0;
154 
157 
159  virtual bool updatesPending() const = 0;
160  };
161 } // End namespace pool
162 #endif // POOL_IDBCONTAINER_H
pool::IDbContainer::update
virtual DbStatus update(DbContainer &cntH, const void *object, ShapeH shape, const Token::OID_t &linkH)=0
Update existing object in the container.
pool::DbAccessMode
int DbAccessMode
Definition: Database/APR/StorageSvc/StorageSvc/pool.h:36
pool::IDbContainer::transAct
virtual DbStatus transAct(Transaction::Action)=0
Execute Transaction Action.
pool::IDbContainer::size
virtual uint64_t size()=0
Access to container size.
pool::DbStatus
Definition: DbStatus.h:67
Transaction.h
pool::IDbContainer::free
virtual DbStatus free(void *ptr, DbContainer &cntH)=0
In place deletion of raw memory.
pool::IDbContainer::useNextRecordId
virtual void useNextRecordId(uint64_t)=0
Suggest next Record ID for tbe next object written - used only with synced indexes.
pool::IDbContainer::allocate
virtual DbStatus allocate(DbContainer &cntH, const void *object, ShapeH shape, Token::OID_t &oid)=0
In place allocation of object location.
pool
pool namespace
Definition: libname.h:15
pool::IDbContainer::close
virtual DbStatus close()=0
Close the container.
pool::IDbContainer
Definition: IDbContainer.h:46
pool::DbObjectHandle
Definition: DbContainer.h:37
pool::IDbContainer::update
virtual DbStatus update(DbContainer &cntH, const void *object, ShapeH shape, const DbObjectHandle< DbObject > &objH)=0
Update existing object in the container.
dbg::ptr
void * ptr(T *p)
Definition: SGImplSvc.cxx:74
pool::IDbContainer::nextRecordId
virtual uint64_t nextRecordId()=0
Number of next record in the container (=size if no delete is allowed)
pool::IDbContainer::load
virtual DbStatus load(void **ptr, ShapeH shape, const Token::OID_t &lnkH, Token::OID_t &oid, bool any_next=false)=0
Find object within the container and load it into memory.
pool::IDbContainer::updatesPending
virtual bool updatesPending() const =0
Query the pending transaction stack.
pool::IDbContainer::select
virtual DbStatus select(DbSelect &sel)=0
Define selection.
pool::IDbContainer::getOption
virtual DbStatus getOption(DbOption &refOpt)=0
Access options.
Token::OID_t
Definition: Token.h:24
pool::ShapeH
const class Shape * ShapeH
Definition: DbContainerObj.h:26
pool::IDbContainer::save
virtual DbStatus save(DbObjectHandle< DbObject > &objH)=0
Add object to the container.
pool::IDbContainer::setOption
virtual DbStatus setOption(const DbOption &refOpt)=0
Set options.
pool::IDbContainer::checkAccess
virtual DbStatus checkAccess(DbDatabase &dbH, const std::string &nam) const =0
Check if we can access the container for reading with the given type.
pool::DbOption
Definition: DbOption.h:36
pool::IDbContainer::save
virtual DbStatus save(DbContainer &cntH, const void *object, ShapeH shape, Token::OID_t &linkH)=0
Save new object in the container and return its handle.
sel
sel
Definition: SUSYToolsTester.cxx:92
pool::IDbContainer::name
virtual std::string name() const =0
Get container name.
pool::DbSelect
Definition: DbSelect.h:43
xAOD::uint64_t
uint64_t
Definition: EventInfo_v1.cxx:123
Preparation.mode
mode
Definition: Preparation.py:107
pool::IDbContainer::destroy
virtual DbStatus destroy(const Token::OID_t &linkH)=0
Destroy an object in a container.
pool::IDbContainer::~IDbContainer
virtual ~IDbContainer()
Destructor (called only by sub-classes)
Definition: IDbContainer.h:49
pool::IDbContainer::fetch
virtual DbStatus fetch(DbSelect &sel)=0
Fetch next object address of the selection to set token.
pool::IDbContainer::release
virtual void release()=0
Release the technology specific implementation.
pool::IDbContainer::open
virtual DbStatus open(DbDatabase &dbH, const std::string &nam, const DbTypeInfo *info, DbAccessMode mode)=0
Open the container.
pool::Transaction::Action
Action
Definition: Transaction.h:34
pool::DbContainer
Definition: DbContainer.h:51
DbObjectHandle.h
pool::IDbContainer::allocate
virtual void * allocate(unsigned long siz, DbContainer &cntH, ShapeH shape)=0
In place allocation of raw memory.
pool::DbDatabase
Definition: DbDatabase.h:53
Token.h
This file contains the class definition for the Token class (migrated from POOL).
python.ParticleTypeUtil.info
def info
Definition: ParticleTypeUtil.py:87
pool::DbTypeInfo
Definition: DbTypeInfo.h:47