ATLAS Offline Software
Loading...
Searching...
No Matches
DataHeader_p6.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3*/
4
7
8#include "CxxUtils/MD5.h"
9
10#include <uuid/uuid.h>
11
12 static_assert(std::is_nothrow_move_constructible<DataHeaderForm_p6>::value);
13
14
15unsigned int DataHeaderForm_p6::insertDb(const DbRecord& rec) {
16 unsigned int index = 0U;
17 for (std::vector<DbRecord>::const_iterator iter = m_dbRecords.begin(), last = m_dbRecords.end();
18 iter != last; ++iter, ++index) {
19 if (*iter == rec) break;
20 }
21 if (index == m_dbRecords.size()) {
22 m_dbRecords.push_back(rec);
23 m_modified = true;
24 }
25 return(index);
26}
27
28std::size_t DataHeaderForm_p6::sizeDb() const {
29 return(m_dbRecords.size());
30}
31
33 return m_dbRecords[index].fid;
34}
35
36unsigned int DataHeaderForm_p6::getDbTech(unsigned int index) const {
37 return m_dbRecords[index].tech;
38}
39
41 const std::vector<std::string>& aliases, bool doAliasFiltering,
42 const std::vector<unsigned int>& symLinks,
43 const std::vector<sgkey_t>& hashes)
44{
45 unsigned int index = 0U;
46 for (std::vector<ObjRecord>::const_iterator iter = m_objRecords.begin(), last = m_objRecords.end();
47 iter != last; ++iter, ++index) {
48 if (*iter == rec) break;
49 }
50 if (index != m_objRecords.size()) {
51 // found matching object record, check if all the info is the same
52 if( m_objSymLinks[index] != symLinks ) {
53 m_objSymLinks[index] = symLinks;
54 m_modified = true;
55 }
56 if( m_objHashes[index] != hashes ) {
57 m_objHashes[index] = hashes;
58 m_modified = true;
59 }
60 if( (!doAliasFiltering or m_modified) and m_objAlias[index] != aliases ) {
61 m_objAlias[index] = aliases;
62 m_modified = true;
63 }
64 return index;
65 }
66 // enter a new record
67 m_objRecords.push_back( rec );
68 m_objAlias.push_back( aliases );
69 m_objSymLinks.push_back( symLinks );
70 m_objHashes.push_back( hashes );
71 m_modified = true;
72 return m_objRecords.size() - 1;
73}
74
75std::size_t DataHeaderForm_p6::sizeObj() const {
76 return(m_objRecords.size());
77}
78
79const std::string& DataHeaderForm_p6::getObjContainer(unsigned int index) const {
80 return m_objRecords[index].cont;
81}
82
83const std::string& DataHeaderForm_p6::getObjKey(unsigned int index) const {
84 return m_objRecords[index].key;
85}
86
87unsigned int DataHeaderForm_p6::getObjType(unsigned int index) const {
88 return m_objRecords[index].clid;
89}
90
91const Guid& DataHeaderForm_p6::getObjClassId(unsigned int index) const {
92 return m_objRecords[index].guid;
93}
94
95const std::vector<std::string>& DataHeaderForm_p6::getObjAlias(unsigned int index) const {
96 return m_objAlias[index];
97}
98
99const std::vector<unsigned int>&
101 return m_objSymLinks[index];
102}
103
104const std::vector<DataHeaderForm_p6::sgkey_t>&
106 return(m_objHashes[index]);
107}
108
110 return m_modified;
111}
112
116
117void DataHeaderForm_p6::setToken( const std::string& tok )
118{
119 m_token = tok;
120}
121
122const std::string& DataHeaderForm_p6::getToken() const {
123 return m_token;
124}
125
126void DataHeaderForm_p6::resize(unsigned int size) {
127 m_objRecords.reserve( size );
128 m_objAlias.reserve( size );
129 m_objSymLinks.reserve( size );
130 m_objHashes.reserve( size );
131}
132
133
134
135//---------------------------------------------------------------------
136
137const std::string& DataHeader_p6::dhFormToken() const {
138 return(m_dhFormToken);
139}
140
141void DataHeader_p6::setDhFormToken(const std::string& formToken) {
142 m_dhFormToken = formToken;
143}
144
This file contains the class definitions for the DataHeader_p6 and DataHeaderForm_p6.
solar's public-domain MD5, wrapped for C++.
This file contains the class definition for the Token class (migrated from POOL).
const std::string & getToken() const
std::vector< std::vector< std::string > > m_objAlias
std::string m_token
Reference to self in the persistent storage.
const std::string & getObjKey(unsigned int index) const
unsigned int getDbTech(unsigned int index) const
const Guid & getObjClassId(unsigned int index) const
std::vector< std::vector< unsigned int > > m_objSymLinks
std::size_t sizeObj() const
std::vector< ObjRecord > m_objRecords
unsigned int insertDb(const DbRecord &rec)
void setToken(const std::string &tok)
Guid getDbGuid(unsigned int index) const
const std::string & getObjContainer(unsigned int index) const
void resize(unsigned int size)
std::size_t sizeDb() const
unsigned int getObjType(unsigned int index) const
bool isModified() const
const std::vector< sgkey_t > & getObjHashes(unsigned int index) const
bool m_modified
indicates that the last event was somehow different and a new DHForm needs to be written
std::vector< std::vector< sgkey_t > > m_objHashes
const std::vector< unsigned int > & getObjSymLinks(unsigned int index) const
unsigned int insertObj(const ObjRecord &rec, const std::vector< std::string > &alias=std::vector< std::string >(), bool doAliasFiletering=true, const std::vector< unsigned int > &symLinks=std::vector< unsigned int >(), const std::vector< sgkey_t > &hashes=std::vector< sgkey_t >())
const std::vector< std::string > & getObjAlias(unsigned int index) const
std::vector< DbRecord > m_dbRecords
void setDhFormToken(const std::string &formToken)
const std::string & dhFormToken() const
std::string m_dhFormToken
This class provides a encapsulation of a GUID/UUID/CLSID/IID data structure (128 bit number).
Definition Guid.h:25
Definition index.py:1