ATLAS Offline Software
Loading...
Searching...
No Matches
DataHeaderCnv_p3.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3*/
4
10
13
14#include <cstdio>
15#include <sstream>
16#include <algorithm>
17
19
20//______________________________________________________________________________
22 DataHeaderElement* trans,
23 const std::vector<std::string>& map) {
24 trans->m_pClid = *pers->m_clids.begin();
25 trans->m_clids.assign (pers->m_clids.begin()+1, pers->m_clids.end());
26 trans->m_key = *pers->m_alias.begin();
27 trans->m_alias.assign (pers->m_alias.begin()+1, pers->m_alias.end());
28 if (!std::ranges::is_sorted (trans->m_alias)) {
29 // Should really be sorted, but just in case...
30 std::ranges::sort (trans->m_alias);
31 auto ret = std::ranges::unique (trans->m_alias);
32 trans->m_alias.erase (ret.begin(), ret.end());
33 }
34 trans->m_hashes.clear();
35 trans->m_hashes.reserve(pers->m_hashes.size());
36 for (std::vector<uint64_t>::const_iterator iter = pers->m_hashes.begin(),
37 last = pers->m_hashes.end(); iter != last; ++iter) {
38 trans->m_hashes.push_back((unsigned int)(*iter));
39 }
40// Translate PoolToken
41 std::string tokenStr;
42 if (map.empty()) {
43 tokenStr = pers->m_token;
44 } else {
45 unsigned int tokenSize = 129 + pers->m_token.size();
46 if (pers->m_prefixIdx > 0) {
47 tokenSize += map[pers->m_prefixIdx].size();
48 }
49 if (pers->m_keyPos > 0) {
50 tokenSize += trans->m_key.size();
51 }
52 tokenStr.reserve(tokenSize);
53// Append DbGuid
54 tokenStr = "[DB=";
55 tokenStr.append(map[pers->m_dbGuidIdx]);
56// Still optimize
57 tokenStr.append("][CNT=");
58 if (pers->m_prefixIdx > 0) {
59 tokenStr.append(map[pers->m_prefixIdx]);
60 }
61// insert key
62 if (pers->m_keyPos > 0) {
63 tokenStr.append(pers->m_token.substr(0, pers->m_keyPos - 1));
64 tokenStr.append(trans->m_key);
65 tokenStr.append(pers->m_token.substr(pers->m_keyPos - 1));
66 } else {
67 tokenStr.append(pers->m_token);
68 }
69// Append ClassId
70 tokenStr.append("][CLID=");
71 tokenStr.append(map[pers->m_classIdIdx]);
72 const unsigned int length = 40;
73 char text[length];
74 snprintf(text, length, "][TECH=%08X][OID=%08X-%08X]", pers->m_technology, pers->m_oid1, pers->m_oid2);
75 tokenStr.append(text);
76 }
77 trans->m_token.fromString(tokenStr);
78}
79//______________________________________________________________________________
81 DataHeaderElement_p3* /*pers*/,
82 std::vector<std::string>& /*map*/) {
83// Moved to next _p version
84}
85//______________________________________________________________________________
86//______________________________________________________________________________
88//______________________________________________________________________________
90 trans->m_dataHeader.resize(pers->m_DataHeader.size());
91 std::vector<DataHeaderElement>::iterator it = trans->m_dataHeader.begin();
92 for (std::vector<DataHeaderElement_p3>::const_iterator pit = pers->m_DataHeader.begin(),
93 last = pers->m_DataHeader.end(); pit != last; ++it, ++pit) {
94 m_elemCnv.persToTrans(&(*pit), &(*it), pers->m_GuidMap);
95 }
96 trans->m_inputDataHeader.resize(pers->m_InputDataHeader.size());
97 it = trans->m_inputDataHeader.begin();
98 for (std::vector<DataHeaderElement_p3>::const_iterator pit = pers->m_InputDataHeader.begin(),
99 last = pers->m_InputDataHeader.end(); pit != last; ++it, ++pit) {
100 m_elemCnv.persToTrans(&(*pit), &(*it), pers->m_GuidMap);
101 }
102}
103//______________________________________________________________________________
104void DataHeaderCnv_p3::transToPers(const DataHeader* /*trans*/, DataHeader_p3* /*pers*/) {
105// Moved to next _p version
106}
107//______________________________________________________________________________
109 const std::string& /*key*/,
110 const std::string& /*token*/) {
111// Moved to next _p version
112}
This file contains the class definition for the DataHeaderCnv_p3 and DataHeaderElementCnv_p3 classes.
This file contains the class definition for the DataHeader and DataHeaderElement classes.
double length(const pvec &v)
void insertDHRef(DataHeader_p3 *pers, const std::string &key, const std::string &token)
void persToTrans(const DataHeader_p3 *pers, DataHeader *trans)
DataHeaderElementCnv_p3 m_elemCnv
void transToPers(const DataHeader *trans, DataHeader_p3 *pers)
void persToTrans(const DataHeaderElement_p3 *pers, DataHeaderElement *trans, const std::vector< std::string > &map)
void transToPers(const DataHeaderElement *trans, DataHeaderElement_p3 *pers, std::vector< std::string > &map)
This class provides a persistent representation for the DataHeaderElement class.
std::vector< uint64_t > m_hashes
unsigned int m_technology
std::vector< unsigned int > m_clids
unsigned short m_dbGuidIdx
unsigned short m_classIdIdx
unsigned short m_prefixIdx
unsigned short m_keyPos
std::vector< std::string > m_alias
This class provides a persistent form for the TransientAddress.
Definition DataHeader.h:37
CLID m_pClid
primary ClassID.
Definition DataHeader.h:105
std::string m_key
string with StoreGate key.
Definition DataHeader.h:109
std::vector< std::string > m_alias
vector of StoreGate alias string.
Definition DataHeader.h:111
std::vector< CLID > m_clids
vector of unsigned long to store ClassID's for symlinked container.
Definition DataHeader.h:107
std::vector< sgkey_t > m_hashes
hash table for ElementLink host container keys.
Definition DataHeader.h:115
Token m_token
Transient address token.
Definition DataHeader.h:113
This class provides a persistent representation for the DataHeader class.
std::vector< DataHeaderElement_p3 > m_InputDataHeader
std::vector< std::string > m_GuidMap
std::vector< DataHeaderElement_p3 > m_DataHeader
This class provides the layout for summary information stored for data written to POOL.
Definition DataHeader.h:123
std::vector< DataHeaderElement > m_inputDataHeader
vector with DataHeaderElement to upstream DataHeader ("Provenance").
Definition DataHeader.h:211
std::vector< DataHeaderElement > m_dataHeader
vector with DataHeaderElement to "DataObject".
Definition DataHeader.h:209
Token & fromString(const std::string_view from)
Build from the string representation of a token.
Definition Token.cxx:147
STL class.