ATLAS Offline Software
DbContainerImp.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 //
7 // Package : StorageSvc (The POOL project)
8 //
9 // @author M.Frank
10 //====================================================================
11 #ifndef POOL_DBCONTAINERIMP_H
12 #define POOL_DBCONTAINERIMP_H 1
13 
16 #include "StorageSvc/pool.h"
18 #include "POOLCore/DbPrint.h"
19 
20 // STL include files
21 #include <map>
22 #include <vector>
23 #include <utility>
24 
25 /*
26  * POOL namespace declaration
27  */
28 namespace pool {
29 
30  // Forward declarations
31  class IDbContainer;
32 
44  class DbContainerImp : virtual public IDbContainer, public APRMessaging
45  {
46  protected:
47 
49  struct DbAction {
50  const void* object;
51  const Shape* shape;
54 
55  DbAction() : object(nullptr), shape(nullptr), action(NONE) { }
56  DbAction(const void* obj, const Shape* s, const Token::OID_t& l, AccessMode a)
57  : object(obj), shape(s), link(l), action(a) { }
58 
59  const void* dataAtOffset(size_t offset) {
60  return static_cast<const char*>(object) + offset;
61  }
62  };
63 
64  typedef std::vector< DbAction > ActionList;
65 
66  private:
70  size_t m_size;
72  size_t m_writeSize;
75  protected:
77  std::string m_name;
82 
84  virtual ~DbContainerImp();
86  int stackType() const
87  { return m_stackType; }
89  size_t stackSize() const
90  { return m_size; }
92  ActionList::value_type* stackEntry(size_t which)
93  { return (which <= m_size) ? &(*(m_stack.begin()+which)) : 0; }
95  virtual DbStatus writeObject(ActionList::value_type& /* entry */)
96  { return Error; }
99 
100  public:
101  explicit DbContainerImp(const std::string& name);
103  virtual void release() override { delete this; }
105  virtual uint64_t size() override;
107  virtual std::string name() const override
108  { return m_name; }
110  virtual uint64_t nextRecordId() override;
112  virtual void useNextRecordId(uint64_t) override {};
114  virtual DbStatus close() override;
115 
117 
121  virtual DbStatus getOption(DbOption& opt) override;
122 
124 
128  virtual DbStatus setOption(const DbOption& opt) override;
129 
133  virtual DbStatus store( const void* object,
134  DbContainer& cntH,
135  ShapeH shape) override;
138  const void* object,
139  ShapeH shape,
140  Token::OID_t& oid) override;
142  virtual DbStatus fetch(DbSelect& sel) override;
143 
145 
154  virtual DbStatus load( void** ptr, ShapeH shape,
155  const Token::OID_t& lnkH,
156  Token::OID_t& oid,
157  bool any_next) override;
159  virtual DbStatus clearStack();
161  virtual DbStatus fetch(const Token::OID_t& linkH, Token::OID_t& stmt);
162 
164 
170  virtual DbStatus loadObject(void** ptr, ShapeH shape, Token::OID_t& oid) = 0;
171 
172  };
173 } // End namespace pool
174 #endif // POOL_DBCONTAINERIMP_H
pool::DbContainerImp::DbAction
List of actions to execute at commit.
Definition: DbContainerImp.h:49
createCoolChannelIdFile.stmt
stmt
Definition: createCoolChannelIdFile.py:41
pool::DbContainerImp::name
virtual std::string name() const override
Get container name.
Definition: DbContainerImp.h:107
pool::DbStatus
Definition: DbStatus.h:64
pool::DbContainerImp::commitTransaction
virtual DbStatus commitTransaction()
Execute object modification requests during a transaction.
pool::DbContainerImp::clearStack
virtual DbStatus clearStack()
Clear Transaction stack containing transaction requests.
make_coralServer_rep.opt
opt
Definition: make_coralServer_rep.py:19
pool::DbContainerImp::m_size
size_t m_size
Current size of the transaction stack.
Definition: DbContainerImp.h:70
pool::DbContainerImp::fetch
virtual DbStatus fetch(const Token::OID_t &linkH, Token::OID_t &stmt)
Fetch refined object address. Default implementation returns identity.
pool::DbContainerImp::fetch
virtual DbStatus fetch(DbSelect &sel) override
Fetch next object address of the selection to set token.
pool::DbContainerImp::stackSize
size_t stackSize() const
Access stack size.
Definition: DbContainerImp.h:89
pool::DbContainerImp::DbAction::DbAction
DbAction(const void *obj, const Shape *s, const Token::OID_t &l, AccessMode a)
Definition: DbContainerImp.h:56
pool
pool namespace
Definition: libname.h:15
pool::IDbContainer
Definition: IDbContainer.h:46
PrintTrkAnaSummary.l
l
Printing final latex table to .tex output file.
Definition: PrintTrkAnaSummary.py:370
pool::DbContainerImp::m_name
std::string m_name
Container name.
Definition: DbContainerImp.h:77
pool::DbContainerImp::nextRecordId
virtual uint64_t nextRecordId() override
Number of next record in the container (=size if no delete is allowed)
pool::APRMessaging
AthMessaging wrapper to set the output level in APR components.
Definition: DbPrint.h:35
dbg::ptr
void * ptr(T *p)
Definition: SGImplSvc.cxx:74
pool::Shape
Definition: Shape.h:35
pool::DbContainerImp::useNextRecordId
virtual void useNextRecordId(uint64_t) override
Suggest next Record ID for tbe next object written - used only with synced indexes.
Definition: DbContainerImp.h:112
Token::OID_t
Definition: Token.h:24
pool::DbContainerImp::transAct
virtual DbStatus transAct(Transaction::Action) override
Execute Transaction Action.
DbPrint.h
pool::ShapeH
const class Shape * ShapeH
Definition: DbContainerObj.h:27
pool::DbContainerImp::writeObject
virtual DbStatus writeObject(ActionList::value_type &)
Commit single entry to container.
Definition: DbContainerImp.h:95
pool::DbOption
Definition: DbOption.h:36
pool::DbContainerImp::~DbContainerImp
virtual ~DbContainerImp()
Standard destructor.
sel
sel
Definition: SUSYToolsTester.cxx:92
pool::DbContainerImp::DbAction::action
AccessMode action
Definition: DbContainerImp.h:53
pool::DbSelect
Definition: DbSelect.h:43
pool::DbContainerImp::loadObject
virtual DbStatus loadObject(void **ptr, ShapeH shape, Token::OID_t &oid)=0
Find object by object identifier and load it into memory.
pool::DbContainerImp::close
virtual DbStatus close() override
Close the container and deallocate resources.
xAOD::uint64_t
uint64_t
Definition: EventInfo_v1.cxx:123
pool::DbContainerImp::setOption
virtual DbStatus setOption(const DbOption &opt) override
Set options.
pool::DbContainerImp::m_canUpdate
bool m_canUpdate
Flag to indicate if object updates are supported.
Definition: DbContainerImp.h:79
pool::DbContainerImp::DbContainerImp
DbContainerImp(const std::string &name)
pool::AccessMode
AccessMode
Definition of access modes.
Definition: Database/APR/StorageSvc/StorageSvc/pool.h:40
python.Utils.unixtools.which
def which(filename, env=os.environ)
UNIX-style which ---------------------------------------------------------—.
Definition: unixtools.py:39
pool::DbContainerImp::DbAction::link
Token::OID_t link
Definition: DbContainerImp.h:52
pool::DbContainerImp::ActionList
std::vector< DbAction > ActionList
Definition: DbContainerImp.h:64
pool::DbContainerImp::DbAction::dataAtOffset
const void * dataAtOffset(size_t offset)
Definition: DbContainerImp.h:59
pool.h
pool::DbContainerImp::store
virtual DbStatus store(const void *object, DbContainer &cntH, ShapeH shape) override
Store object in location.
pool::NONE
@ NONE
Definition: Database/APR/StorageSvc/StorageSvc/pool.h:41
pool::DbContainerImp::m_stackType
int m_stackType
Accumulated stack entry types.
Definition: DbContainerImp.h:74
pool::DbContainerImp::size
virtual uint64_t size() override
Size of the container.
pool::DbContainerImp::stackEntry
ActionList::value_type * stackEntry(size_t which)
Internal: get access to stack entry.
Definition: DbContainerImp.h:92
pool::Transaction::Action
Action
Definition: Transaction.h:34
pool::DbContainerImp::m_canDestroy
bool m_canDestroy
Flag to indicate if object removals are supported.
Definition: DbContainerImp.h:81
pool::DbContainerImp::m_writeSize
size_t m_writeSize
Number of objects to be written out during open transaction.
Definition: DbContainerImp.h:72
pool::DbContainerImp::getOption
virtual DbStatus getOption(DbOption &opt) override
Access options.
pool::DbContainer
Definition: DbContainer.h:48
a
TList * a
Definition: liststreamerinfos.cxx:10
pool::DbContainerImp::m_stack
ActionList m_stack
Transaction fifo storage for writing.
Definition: DbContainerImp.h:68
pool::DbContainerImp::release
virtual void release() override
Release instance (Abstract interfaces do not expose destructor!)
Definition: DbContainerImp.h:103
pool::DbContainerImp::DbAction::object
const void * object
Definition: DbContainerImp.h:50
convertTimingResiduals.offset
offset
Definition: convertTimingResiduals.py:71
pool::DbContainerImp::allocate
virtual DbStatus allocate(DbContainer &cntH, const void *object, ShapeH shape, Token::OID_t &oid) override
In place allocation of object location.
python.SystemOfUnits.s
float s
Definition: SystemOfUnits.py:147
pool::DbContainerImp::stackType
int stackType() const
Access accumulated stack entry types.
Definition: DbContainerImp.h:86
pool::DbContainerImp
Definition: DbContainerImp.h:45
IDbContainer.h
python.PyAthena.obj
obj
Definition: PyAthena.py:132
Token.h
This file contains the class definition for the Token class (migrated from POOL).
pool::DbContainerImp::DbAction::DbAction
DbAction()
Definition: DbContainerImp.h:55
pool::DbContainerImp::load
virtual DbStatus load(void **ptr, ShapeH shape, const Token::OID_t &lnkH, Token::OID_t &oid, bool any_next) override
Find object within the container and load it into memory.
pool::DbContainerImp::DbAction::shape
const Shape * shape
Definition: DbContainerImp.h:51