Project
Loading...
Searching...
No Matches
FileMetaData.cxx
Go to the documentation of this file.
1
// Copyright 2019-2020 CERN and copyright holders of ALICE O2.
2
// See https://alice-o2.web.cern.ch/copyright for details of the copyright holders.
3
// All rights not expressly granted are reserved.
4
//
5
// This software is distributed under the terms of the GNU General Public
6
// License v3 (GPL Version 3), copied verbatim in the file "COPYING".
7
//
8
// In applying this license CERN does not waive the privileges and immunities
9
// granted to it by virtue of its status as an Intergovernmental Organization
10
// or submit itself to any jurisdiction.
11
13
14
#include "
DetectorsCommonDataFormats/FileMetaData.h
"
15
#include "
Framework/DataTakingContext.h
"
16
#include "
CommonUtils/StringUtils.h
"
17
#include <
Framework/Logger.h
>
18
#include <TMD5.h>
19
#include <filesystem>
20
#include <chrono>
21
22
using namespace
o2::dataformats
;
23
24
bool
FileMetaData::fillFileData
(
const
std::string& fname,
bool
fillmd5,
const
std::string& tmpEnding)
25
{
26
// fill metadata for fname, accounting that the fname might be temporary one while the real one is fnameFinal
27
try
{
28
lurl
= std::filesystem::canonical(fname).string();
29
size
= std::filesystem::file_size(
lurl
);
30
if
(fillmd5) {
31
std::unique_ptr<TMD5> md5ptr{TMD5::FileChecksum(fname.c_str())};
32
if
(md5ptr) {
33
md5
= md5ptr->AsString();
34
}
35
}
36
ctime
= std::chrono::time_point_cast<std::chrono::milliseconds>(std::chrono::system_clock::now()).time_since_epoch().count();
37
if
(tmpEnding.size()) {
38
o2::utils::Str::rtrim
(
lurl
, tmpEnding);
39
}
40
}
catch
(std::exception
const
& e) {
41
LOG
(error) <<
"Failed to fill metadata for file "
<< fname <<
", reason: "
<< e.what();
42
return
false
;
43
}
44
return
true
;
45
}
46
47
std::string
FileMetaData::asString
()
const
48
{
49
std::string ms;
50
51
// obligatory part
52
ms += fmt::format(
"LHCPeriod: {}\n"
,
LHCPeriod
);
53
ms += fmt::format(
"run: {}\n"
,
run
);
54
ms += fmt::format(
"lurl: {}\n"
,
lurl
);
55
56
// optional part
57
if
(!
type
.empty()) {
58
ms += fmt::format(
"type: {}\n"
,
type
);
59
}
60
if
(
ctime
) {
61
ms += fmt::format(
"ctime: {}\n"
,
ctime
);
62
}
63
if
(
size
) {
64
ms += fmt::format(
"size: {}\n"
,
size
);
65
}
66
if
(!
guid
.empty()) {
67
ms += fmt::format(
"guid: {}\n"
,
guid
);
68
}
69
if
(!
surl
.empty()) {
70
ms += fmt::format(
"surl: {}\n"
,
surl
);
71
}
72
if
(!
curl
.empty()) {
73
ms += fmt::format(
"curl: {}\n"
,
curl
);
74
}
75
if
(!
md5
.empty()) {
76
ms += fmt::format(
"md5: {}\n"
,
md5
);
77
}
78
if
(!
xxhash
.empty()) {
79
ms += fmt::format(
"xxhash: {}\n"
,
xxhash
);
80
}
81
if
(!
seName
.empty()) {
82
ms += fmt::format(
"seName: {}\n"
,
seName
);
83
}
84
if
(!
seioDaemons
.empty()) {
85
ms += fmt::format(
"seioDaemons: {}\n"
,
seioDaemons
);
86
}
87
if
(!
priority
.empty()) {
88
ms += fmt::format(
"priority: {}\n"
,
priority
);
89
}
90
if
(
persistent
) {
91
ms += fmt::format(
"persistent: {}\n"
,
persistent
);
92
}
93
if
(!
detComposition
.empty()) {
94
ms += fmt::format(
"det_composition: {}\n"
,
detComposition
);
95
}
96
if
(!
tfOrbits
.empty()) {
97
ms += fmt::format(
"TFOrbits: {}"
,
tfOrbits
[0]);
98
for
(
size_t
i
= 1;
i
<
tfOrbits
.size();
i
++) {
99
ms += fmt::format(
",{}"
,
tfOrbits
[
i
]);
100
}
101
ms +=
"\n"
;
102
}
103
104
return
ms;
105
}
106
107
void
FileMetaData::setDataTakingContext
(
const
o2::framework::DataTakingContext
& dtc)
108
{
109
LHCPeriod
= dtc.
lhcPeriod
;
110
detComposition
= dtc.
detectors
;
111
run
= dtc.
runNumber
;
112
}
113
114
std::ostream&
o2::dataformats::operator<<
(std::ostream&
stream
,
const
FileMetaData
&
h
)
115
{
116
stream
<<
h
.asString();
117
return
stream
;
118
}
StringUtils.h
DataTakingContext.h
FileMetaData.h
i
int32_t i
Definition
GPUCommonAlgorithm.h:443
Logger.h
h
Class for time synchronization of RawReader instances.
size
GLsizeiptr size
Definition
glcorearb.h:659
type
GLint GLint GLsizei GLint GLenum GLenum type
Definition
glcorearb.h:275
stream
GLuint GLuint stream
Definition
glcorearb.h:1806
o2::dataformats
Definition of a container to keep/associate and arbitrary number of labels associated to an index wit...
Definition
MeanVertexObject.h:22
o2::dataformats::operator<<
std::ostream & operator<<(std::ostream &os, const o2::dataformats::MeanVertexObject &o)
Definition
MeanVertexObject.cxx:51
o2::dataformats::FileMetaData
Definition
FileMetaData.h:30
o2::dataformats::FileMetaData::seioDaemons
std::string seioDaemons
Definition
FileMetaData.h:40
o2::dataformats::FileMetaData::asString
std::string asString() const
Definition
FileMetaData.cxx:47
o2::dataformats::FileMetaData::detComposition
std::string detComposition
Definition
FileMetaData.h:42
o2::dataformats::FileMetaData::LHCPeriod
std::string LHCPeriod
Definition
FileMetaData.h:31
o2::dataformats::FileMetaData::run
std::string run
Definition
FileMetaData.h:43
o2::dataformats::FileMetaData::guid
std::string guid
Definition
FileMetaData.h:34
o2::dataformats::FileMetaData::seName
std::string seName
Definition
FileMetaData.h:39
o2::dataformats::FileMetaData::curl
std::string curl
Definition
FileMetaData.h:36
o2::dataformats::FileMetaData::priority
std::string priority
Definition
FileMetaData.h:41
o2::dataformats::FileMetaData::fillFileData
bool fillFileData(const std::string &fname, bool fillmd5=false, const std::string &tmpEnding="")
Definition
FileMetaData.cxx:24
o2::dataformats::FileMetaData::surl
std::string surl
Definition
FileMetaData.h:35
o2::dataformats::FileMetaData::xxhash
std::string xxhash
Definition
FileMetaData.h:38
o2::dataformats::FileMetaData::ctime
long ctime
Definition
FileMetaData.h:44
o2::dataformats::FileMetaData::lurl
std::string lurl
Definition
FileMetaData.h:32
o2::dataformats::FileMetaData::tfOrbits
std::vector< uint32_t > tfOrbits
Definition
FileMetaData.h:47
o2::dataformats::FileMetaData::persistent
int persistent
Definition
FileMetaData.h:46
o2::dataformats::FileMetaData::setDataTakingContext
void setDataTakingContext(const o2::framework::DataTakingContext &dtc)
Definition
FileMetaData.cxx:107
o2::dataformats::FileMetaData::md5
std::string md5
Definition
FileMetaData.h:37
o2::framework::DataTakingContext
Definition
DataTakingContext.h:30
o2::framework::DataTakingContext::lhcPeriod
std::string lhcPeriod
The current lhc period.
Definition
DataTakingContext.h:38
o2::framework::DataTakingContext::detectors
std::string detectors
The list of detectors taking part in the run.
Definition
DataTakingContext.h:44
o2::framework::DataTakingContext::runNumber
std::string runNumber
The current run number.
Definition
DataTakingContext.h:34
o2::utils::Str::rtrim
static void rtrim(std::string &s)
Definition
StringUtils.h:55
LOG
LOG(info)<< "Compressed in "<< sw.CpuTime()<< " s"
DataFormats
Detectors
Common
src
FileMetaData.cxx
Generated on Tue Feb 25 2025 17:02:51 for Project by
1.9.8