diff --git a/src/OutputFile.h b/src/OutputFile.h index 4e60ba2f2cea9d195601e9c565d94af349fc7a53..7e971cfb872af90b4ecf3222a4df4112fc7baec6 100644 --- a/src/OutputFile.h +++ b/src/OutputFile.h @@ -23,6 +23,7 @@ class OutputFile { public: using HeaderType = FRDFileHeader_v2; + struct Metadata { uint32_t run_number; uint32_t lumisection; @@ -35,14 +36,13 @@ class OutputFile { size_t file_size{}; uint32_t num_orbits{}; uint32_t num_files{}; - uint32_t max_index; LumisectionMetadata(uint32_t max_index_per_ls) : max_index(max_index_per_ls) {} void Reset() { file_size = num_orbits = num_files = 0; } - void AddFileMetadata(Metadata &&fmd) { + void AddFileMetadata(Metadata&& fmd) { file_size += fmd.size; num_orbits += fmd.num_orbits; num_files++; @@ -64,9 +64,6 @@ class OutputFile { OutputFile() = default; - std::string GetFilename() { return filename_; } - std::string GetRunDir() { return run_dir_; } - void ReserveHeaderSize() { assert(md_.size == 0); md_.size = sizeof(HeaderType); @@ -101,27 +98,25 @@ class OutputFile { auto IsOpen() -> bool { return (file_ptr_ != NULL); } - auto HasPayload() -> bool { return md_.size > sizeof(HeaderType); } - void SetFileHeader(uint16_t source_id) { header_ = HeaderType(source_id, md_.num_orbits, md_.run_number, md_.lumisection, md_.size); } void SetLumisectionFooter(LumisectionMetadata &md) { - // The last file in a lumisection carries a LS footer + // The last file in a lumisection carries an LS metadata footer ls_footer_.emplace(md); } - uint32_t GetLumisection() { return md_.lumisection; } - uint32_t GetIndex() { return md_.index; } - Metadata GetMetadata() { return md_; } - - auto GetLumisectionFooter() -> LumisectionMetadata { return ls_footer_.value(); } - - auto HasLumisectionFooter() -> bool { return ls_footer_.has_value(); } - auto GetSize() -> size_t { return md_.size; } auto GetNumberOfOrbits() -> uint32_t { return md_.num_orbits; } + auto GetFilename() -> std::string { return filename_; } + auto GetRunDir() -> std::string { return run_dir_; } + auto GetLumisection() -> uint32_t { return md_.lumisection; } + auto GetIndex() -> uint32_t { return md_.index; } + auto GetMetadata() -> Metadata { return md_; } + auto GetLumisectionFooter() -> LumisectionMetadata { return ls_footer_.value(); } + auto HasLumisectionFooter() -> bool { return ls_footer_.has_value(); } + auto HasPayload() -> bool { return md_.size > sizeof(HeaderType); } private: FILE* file_ptr_{}; diff --git a/src/OutputFileHandler.h b/src/OutputFileHandler.h index 20a2e1866a7e6dfab90a5d097cee8cf4ada56b2b..efda6483fa26946eb88a9eba9a81cb0b90e9437d 100644 --- a/src/OutputFileHandler.h +++ b/src/OutputFileHandler.h @@ -20,7 +20,7 @@ struct FileLocator { const std::string filename_suffix; const static std::string working_dirname; - FileLocator(std::string base, std::string pref, std::string suf) + FileLocator(std::string &&base, std::string &&pref, std::string &&suf) : base_path(std::move(base)), filename_prefix(std::move(pref)), filename_suffix(std::move(suf)) {}