ATLAS Offline Software
Loading...
Searching...
No Matches
DataHeaderElementCnv_p3 Class Reference

This class provides the converter to customize the saving of DataHeaderElement_p3. More...

#include <DataHeaderCnv_p3.h>

Collaboration diagram for DataHeaderElementCnv_p3:

Public Member Functions

 DataHeaderElementCnv_p3 ()
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)

Friends

class DataHeaderCnv_p3

Detailed Description

This class provides the converter to customize the saving of DataHeaderElement_p3.

Definition at line 21 of file DataHeaderCnv_p3.h.

Constructor & Destructor Documentation

◆ DataHeaderElementCnv_p3()

DataHeaderElementCnv_p3::DataHeaderElementCnv_p3 ( )

Definition at line 18 of file DataHeaderCnv_p3.cxx.

18{}

Member Function Documentation

◆ persToTrans()

void DataHeaderElementCnv_p3::persToTrans ( const DataHeaderElement_p3 * pers,
DataHeaderElement * trans,
const std::vector< std::string > & map )

Definition at line 21 of file DataHeaderCnv_p3.cxx.

23 {
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}
double length(const pvec &v)
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
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
Token & fromString(const std::string_view from)
Build from the string representation of a token.
Definition Token.cxx:147

◆ transToPers()

void DataHeaderElementCnv_p3::transToPers ( const DataHeaderElement * trans,
DataHeaderElement_p3 * pers,
std::vector< std::string > & map )

Definition at line 80 of file DataHeaderCnv_p3.cxx.

82 {
83// Moved to next _p version
84}

◆ DataHeaderCnv_p3

friend class DataHeaderCnv_p3
friend

Definition at line 28 of file DataHeaderCnv_p3.h.


The documentation for this class was generated from the following files: