Skip to content
Snippets Groups Projects
Commit e2a1b600 authored by Giovanna Lazzari Miotto's avatar Giovanna Lazzari Miotto :mushroom:
Browse files

tidy: output,sink: Pass args as const references

parent 5eaf4c3d
No related branches found
No related tags found
1 merge request!109Introduce pipeline synchronization, output template and parallel sink
......@@ -49,7 +49,7 @@ std::string Detail::LumisectionMetadata::MakeFooter(uint32_t run_number) const {
return footer.str();
}
void Detail::RunMetadata::AddLumisectionMetadata(LumisectionMetadata& ls) {
void Detail::RunMetadata::AddLumisectionMetadata(const LumisectionMetadata& ls) {
std::lock_guard<std::mutex> l(mutex_);
num_orbits += ls.num_orbits;
num_files += ls.num_files;
......
......@@ -92,7 +92,7 @@ struct RunMetadata {
num_orbits = num_files = 0;
number = run_number;
}
void AddLumisectionMetadata(LumisectionMetadata& ls);
void AddLumisectionMetadata(const LumisectionMetadata& ls);
std::string MakeFooter(uint32_t ls_index) const;
};
......@@ -110,23 +110,23 @@ class Output {
Output() = default;
~Output() {}
auto GetHandle() const { return handle_; }
[[maybe_unused]] auto GetHandle() const { return handle_; }
auto GetMetadata() const { return md_; }
auto GetLumisection() const { return md_.lumisection; }
auto GetLumisectionFooter() const { return ls_footer_; }
[[maybe_unused]] auto GetLumisection() const { return md_.lumisection; }
[[maybe_unused]] auto GetLumisectionFooter() const { return ls_footer_; }
auto HasPayload() const {
auto min_val = header_.has_value() ? sizeof(HeaderType) : 0;
return md_.size > min_val;
}
auto HasLumisectionFooter() const { return ls_footer_.lumisection != 0; }
[[maybe_unused]] auto HasLumisectionFooter() const { return ls_footer_.lumisection != 0; }
auto HasHeader() const { return reserved_header_; };
auto GetHeader() const -> std::optional<HeaderType> { return header_; }
[[maybe_unused]] auto GetHeader() const -> std::optional<HeaderType> { return header_; }
void UpdateHeader() {
header_ = HeaderType(md_.source_id, md_.num_orbits, md_.run_number, md_.lumisection, md_.size);
}
void SetLumisectionFooter(Detail::LumisectionMetadata ls) {
void SetLumisectionFooter(const Detail::LumisectionMetadata& ls) {
// The last file in a lumisection carries an LS metadata footer
ls_footer_ = ls;
}
......@@ -136,14 +136,15 @@ class Output {
virtual bool Open() = 0;
virtual int Write(const char*& buffer, size_t size_bytes, uint32_t size_orbits) = 0;
[[maybe_unused]] virtual int WriteAt(const char*& data, size_t size_bytes, std::optional<off_t> abs_seek) = 0;
[[maybe_unused]] virtual int WriteAt(const char*& data, size_t size_bytes,
std::optional<off_t> abs_seek) = 0;
virtual bool Close() = 0;
virtual bool IsOpen() const = 0;
protected:
OutputHandleType handle_;
std::optional<HeaderType> header_;
Detail::FileMetadata md_;
Detail::FileMetadata md_{};
Detail::LumisectionMetadata ls_footer_{};
bool reserved_header_{false};
......
......@@ -50,6 +50,7 @@ void OutputFileHandler::UpdateRunInfo(uint32_t next_run, uint32_t next_index) {
}
void OutputFileHandler::CommitFile() {
assert(ls_);
ls_->AddFileMetadata(outputFile_.GetMetadata());
Detail::FileMetadata file_meta = outputFile_.GetMetadata();
if (ls_->IsLastIndex(file_meta.index_in_ls) && IsMainPipeline() && HasCmsswHeaders()) {
......
......@@ -26,9 +26,9 @@ void Sink<TOutput>::CommitFileHeader(TOutput &file) {
}
template <typename TOutput>
void Sink<TOutput>::CommitOutput(TOutput &f) {
void Sink<TOutput>::CommitOutput(const TOutput &f) {
if constexpr (std::is_same<TOutput, FileOutput>()) {
auto file = reinterpret_cast<FileOutput &>(f);
auto file = reinterpret_cast<const FileOutput &>(f);
auto filename = file.GetFilename();
LOG(TRACE) << "Closing file '" << filename << "'";
assert(file.Close());
......
......@@ -50,10 +50,11 @@ class Sink {
}
}
}
void CommitOutput(TOutput &f);
void CommitOutput(const TOutput &f);
// CommitFileHeader: updates header
void CommitFileHeader(TOutput &f);
Sink(std::string rp, std::string mp) : root_path_(rp), metadata_path_(mp) {
Sink(const std::string &rp, const std::string &mp) : root_path_(rp), metadata_path_(mp) {
commit_thread_ = std::thread(&Sink::ProcessQueue, this);
}
......@@ -65,7 +66,7 @@ class Sink {
commit_thread_.join();
}
void WriteLumisectionFooter(uint32_t run_number, Detail::LumisectionMetadata &ls) {
void WriteLumisectionFooter(uint32_t run_number, const Detail::LumisectionMetadata &ls) {
auto footer = ls.MakeFooter(run_number);
auto filename = Detail::FormatRun(run_number) + "_" +
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment