ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Database
AthenaPOOL
EventSelectorAthenaPool
src
CollectionCursor.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3
*/
4
#include "CoralBase/Attribute.h"
5
6
#include "
CollectionCursor.h
"
7
#include "
CollectionColumn.h
"
8
9
#include "
StorageSvc/APRDefaults.h
"
10
#include "
StorageSvc/DbContainer.h
"
11
12
using namespace
pool
;
13
14
15
CollectionCursor::CollectionCursor
(
16
const
CollectionRowBuffer
& collectionRowBuffer,
17
ContainerMap
& containers
18
)
19
:
m_collectionRowBuffer
( collectionRowBuffer ),
20
m_attrContainers
( containers ),
21
m_tokenContainer
( containers[
CollectionColumn
::tokenColumn().name()] ),
22
m_idx
( -1 )
23
{
24
}
25
26
27
bool
CollectionCursor::next
()
28
{
29
if
( ++
m_idx
>=
size
() ) {
30
return
false
;
31
}
32
// read the row
33
Token
cnt_token(
m_tokenContainer
.token());
34
Token::OID_t
oid { cnt_token.
oid
().first, (std::int64_t)
m_idx
};
35
for
(
auto
& attr :
m_collectionRowBuffer
.attributeList() ) {
36
const
std::string& attr_name = attr.specification().name();
37
DbContainer
&container =
m_attrContainers
.at( attr_name );
38
void
*obj = attr.addressOfData();
39
if
( !container.load( &obj,
nullptr
, oid ).isSuccess() ) {
40
return
false
;
41
}
42
}
43
44
const
std::string& newDHContName = std::format(
"{}(DataHeader)"
,
APRDefaults::ReadConfig::getDataHeaderName
( cnt_token.
dbID
().
toString
() ));
45
const
std::string& oldDHContName = std::format(
"{}_DataHeader"
,
APRDefaults::ReadConfig::getDataHeaderName
( cnt_token.
dbID
().
toString
() ));
46
if
( cnt_token.
contID
() == newDHContName || cnt_token.
contID
() == oldDHContName ) {
47
cnt_token.
setOid
(oid);
48
m_tokenStr
= cnt_token.
toString
();
49
}
else
{
50
// read the Token
51
void
*token_addr = &
m_tokenStr
;
52
if
( !
m_tokenContainer
.load( &token_addr,
nullptr
, oid ).isSuccess() ) {
53
return
false
;
54
}
55
}
56
m_collectionRowBuffer
.token().fromString(
m_tokenStr
);
57
return
true
;
58
}
59
60
61
const
pool::CollectionRowBuffer
&
62
CollectionCursor::currentRow
()
const
63
{
64
return
m_collectionRowBuffer
;
65
}
66
67
68
std::size_t
CollectionCursor::size
()
69
{
70
return
m_tokenContainer
.size();
71
}
72
73
74
bool
CollectionCursor::seek
(std::size_t position)
75
{
76
if
( position >=
size
() ) {
77
return
false
;
78
}
79
m_idx
= position-1;
80
return
true
;
81
}
82
83
84
const
Token
&
CollectionCursor::eventRef
()
const
85
{
86
return
m_collectionRowBuffer
.token();
87
}
APRDefaults.h
CollectionColumn.h
CollectionCursor.h
DbContainer.h
Guid::toString
constexpr void toString(std::span< char, StrLen > buf, bool uppercase=true) const noexcept
Automatic conversion to string representation.
Token
This class provides a token that identifies in a unique way objects on the persistent storage.
Definition
Token.h:22
Token::contID
const std::string & contID() const
Access container identifier.
Definition
Token.h:70
Token::toString
const std::string toString() const
Retrieve the string representation of the token.
Definition
Token.cxx:135
Token::setOid
Token & setOid(const OID_t &oid)
Set object identifier.
Definition
Token.h:86
Token::oid
const OID_t & oid() const
Access object identifier.
Definition
Token.h:82
Token::dbID
const Guid & dbID() const
Access database identifier.
Definition
Token.h:65
pool::CollectionColumn
An implementation for retrieving a description of a column of a collection.
Definition
CollectionColumn.h:19
pool::CollectionCursor::m_idx
std::size_t m_idx
Definition
CollectionCursor.h:62
pool::CollectionCursor::m_attrContainers
ContainerMap & m_attrContainers
Definition
CollectionCursor.h:54
pool::CollectionCursor::next
bool next()
Advances the cursor to the next row of the result set.
Definition
CollectionCursor.cxx:27
pool::CollectionCursor::m_collectionRowBuffer
CollectionRowBuffer m_collectionRowBuffer
Row buffer containing the Token and Attributes.
Definition
CollectionCursor.h:52
pool::CollectionCursor::m_tokenContainer
DbContainer & m_tokenContainer
Container for the event reference.
Definition
CollectionCursor.h:57
pool::CollectionCursor::currentRow
const CollectionRowBuffer & currentRow() const
Returns the selected Tokens and Attributes for the current row of the result set.
Definition
CollectionCursor.cxx:62
pool::CollectionCursor::CollectionCursor
CollectionCursor(const CollectionRowBuffer &collectionRowBuffer, ContainerMap &attrContainers)
Definition
CollectionCursor.cxx:15
pool::CollectionCursor::size
std::size_t size()
Return the size of the collection.
Definition
CollectionCursor.cxx:68
pool::CollectionCursor::seek
bool seek(std::size_t position)
Seeks the cursor to a given position in the collection.
Definition
CollectionCursor.cxx:74
pool::CollectionCursor::eventRef
const Token & eventRef() const
Returns the event reference Token for the current row.
Definition
CollectionCursor.cxx:84
pool::CollectionCursor::m_tokenStr
std::string m_tokenStr
Temporary storage for Event Reference in string format as it is in RNTuple.
Definition
CollectionCursor.h:60
pool::CollectionRowBuffer
A class representing a row of a collection.
Definition
CollectionRowBuffer.h:25
pool::DbContainer
Description: Definition of the object describing a database container Handle managing a DbContainerOb...
Definition
DbContainer.h:48
APRDefaults::ReadConfig::getDataHeaderName
std::string getDataHeaderName(std::string_view databaseName)
Definition
APRDefaults.h:198
pool
Framework include files.
Definition
PersistencySvc_ExtraFunctionality/TestDriver.h:21
pool::ContainerMap
std::map< std::string, DbContainer > ContainerMap
Definition
CollectionCursor.h:20
Token::OID_t
Definition
Token.h:25
Generated on
for ATLAS Offline Software by
1.17.0