ATLAS Offline Software
DbContainerImp.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 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 
17 
18 // STL include files
19 #include <map>
20 #include <vector>
21 #include <utility>
22 
23 /*
24  * POOL namespace declaration
25  */
26 namespace pool {
27 
28  // Forward declarations
29  class IDbContainer;
30 
42  class DbContainerImp : virtual public IDbContainer
43  {
44  protected:
45 
47  struct DbAction {
48  const void* object;
49  const Shape* shape;
52 
53  DbAction() : object(nullptr), shape(nullptr), action(NONE) { }
54  DbAction(const void* obj, const Shape* s, const Token::OID_t& l, AccessMode a)
55  : object(obj), shape(s), link(l), action(a) { }
56 
57  const void* dataAtOffset(size_t offset) {
58  return static_cast<const char*>(object) + offset;
59  }
60  };
61 
62  typedef std::vector< DbAction > ActionList;
63 
64  private:
68  size_t m_size;
70  size_t m_writeSize;
73  protected:
75  std::string m_name;
80 
82  virtual ~DbContainerImp();
84  int stackType() const
85  { return m_stackType; }
87  size_t stackSize() const
88  { return m_size; }
90  ActionList::value_type* stackEntry(size_t which)
91  { return (which <= m_size) ? &(*(m_stack.begin()+which)) : 0; }
93  virtual DbStatus writeObject(ActionList::value_type& /* entry */)
94  { return Error; }
97 
98  public:
101  virtual void release() override { delete this; }
103  virtual uint64_t size() override;
105  virtual std::string name() const override
106  { return m_name; }
108  virtual uint64_t nextRecordId() override;
110  virtual void useNextRecordId(uint64_t) override {};
112  virtual DbStatus close() override;
113 
115 
119  virtual DbStatus getOption(DbOption& opt) override;
120 
122 
126  virtual DbStatus setOption(const DbOption& opt) override;
127 
131  virtual void* allocate( unsigned long siz,
132  DbContainer& cntH,
133  ShapeH shape) override;
135  virtual DbStatus allocate(DbContainer& cntH,
136  const void* object,
137  ShapeH shape,
138  Token::OID_t& oid) override;
140  virtual DbStatus free( void* ptr,
141  DbContainer& cntH) override;
143  virtual DbStatus fetch(DbSelect& sel) override;
145  virtual DbStatus save( DbObjectHandle<DbObject>& objH) override;
146 
148 
153  virtual DbStatus save(DbContainer& cntH,
154  const void* object,
155  ShapeH shape,
156  Token::OID_t& linkH) override;
157 
159 
168  virtual DbStatus load( void** ptr, ShapeH shape,
169  const Token::OID_t& lnkH,
170  Token::OID_t& oid,
171  bool any_next) override;
173  virtual DbStatus clearStack();
175  virtual DbStatus fetch(const Token::OID_t& linkH, Token::OID_t& stmt);
176 
178 
184  virtual DbStatus loadObject(void** ptr, ShapeH shape, Token::OID_t& oid) = 0;
185 
186  };
187 } // End namespace pool
188 #endif // POOL_DBCONTAINERIMP_H
pool::DbContainerImp::DbAction
List of actions to execute at commit.
Definition: DbContainerImp.h:47
createCoolChannelIdFile.stmt
stmt
Definition: createCoolChannelIdFile.py:41
pool::DbContainerImp::name
virtual std::string name() const override
Get container name.
Definition: DbContainerImp.h:105
pool::DbStatus
Definition: DbStatus.h:67
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:68
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:87
pool::DbContainerImp::DbAction::DbAction
DbAction(const void *obj, const Shape *s, const Token::OID_t &l, AccessMode a)
Definition: DbContainerImp.h:54
pool
pool namespace
Definition: libname.h:15
pool::IDbContainer
Definition: IDbContainer.h:46
pool::DbContainerImp::save
virtual DbStatus save(DbObjectHandle< DbObject > &objH) override
Add single entry to container.
pool::DbObjectHandle
Definition: DbHeap.h:26
UploadAMITag.l
list l
Definition: UploadAMITag.larcaf.py:157
pool::DbContainerImp::free
virtual DbStatus free(void *ptr, DbContainer &cntH) override
In place deletion of raw memory.
pool::DbContainerImp::m_name
std::string m_name
Container name.
Definition: DbContainerImp.h:75
pool::DbContainerImp::nextRecordId
virtual uint64_t nextRecordId() override
Number of next record in the container (=size if no delete is allowed)
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:110
Token::OID_t
Definition: Token.h:24
pool::DbContainerImp::transAct
virtual DbStatus transAct(Transaction::Action) override
Execute Transaction Action.
pool::ShapeH
const class Shape * ShapeH
Definition: DbContainerObj.h:26
pool::DbContainerImp::writeObject
virtual DbStatus writeObject(ActionList::value_type &)
Commit single entry to container.
Definition: DbContainerImp.h:93
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:51
pool::DbSelect
Definition: DbSelect.h:43
pool::DbContainerImp::save
virtual DbStatus save(DbContainer &cntH, const void *object, ShapeH shape, Token::OID_t &linkH) override
Save new object in the container and return its handle.
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:77
pool::AccessMode
AccessMode
Definition of access modes.
Definition: Database/APR/StorageSvc/StorageSvc/pool.h:42
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:50
pool::DbContainerImp::ActionList
std::vector< DbAction > ActionList
Definition: DbContainerImp.h:62
pool::DbContainerImp::DbAction::dataAtOffset
const void * dataAtOffset(size_t offset)
Definition: DbContainerImp.h:57
pool::NONE
@ NONE
Definition: Database/APR/StorageSvc/StorageSvc/pool.h:43
pool::DbContainerImp::m_stackType
int m_stackType
Accumulated stack entry types.
Definition: DbContainerImp.h:72
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:90
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:79
pool::DbContainerImp::m_writeSize
size_t m_writeSize
Number of objects to be written out during open transaction.
Definition: DbContainerImp.h:70
pool::DbContainerImp::allocate
virtual void * allocate(unsigned long siz, DbContainer &cntH, ShapeH shape) override
In place allocation of raw memory for the transient object.
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:66
pool::DbContainerImp::release
virtual void release() override
Release instance (Abstract interfaces do not expose destructor!)
Definition: DbContainerImp.h:101
pool::DbContainerImp::DbAction::object
const void * object
Definition: DbContainerImp.h:48
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::DbContainerImp
DbContainerImp()
pool::DbContainerImp::stackType
int stackType() const
Access accumulated stack entry types.
Definition: DbContainerImp.h:84
pool::DbContainerImp
Definition: DbContainerImp.h:43
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:53
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:49