diff --git a/src/OutputByOrbit.cc b/src/OutputByOrbit.cc index 9db8618ec149fb92c4ed58fa5aeddd08c2be6fe8..581a94a70080dae8d928e0bfcd9ccbab10d82c38 100644 --- a/src/OutputByOrbit.cc +++ b/src/OutputByOrbit.cc @@ -12,14 +12,16 @@ #include "tools.h" void OutputByOrbitStream::MonitorEndOfRun() { - int latest_EoR = -1; + int latest_EoR = 0; while (true) { - int current_run_number = output_file_handler_.GetCurrentRunNumber(); + // int current_run_number = output_file_handler_.GetCurrentRunNumber(); + int current_run_number = control_.run_number; if (!control_.running && latest_EoR != current_run_number) { // An unhandled run just stopped; wait N seconds in case the pipeline is still processing // Write EoR file for the most recent run if (output_file_handler_.isMainPipeline()) { output_file_handler_.write_EoR_file(); + output_file_handler_.setCurrentRunNumber(control_.run_number); } // Update local EoR tag latest_EoR = current_run_number; diff --git a/src/OutputFileHandler.cc b/src/OutputFileHandler.cc index fdc95dacb05e756e3606b8f12b10c74e6ad9f9bf..25fd465e3ea85f82e0f6b6936fa10fe7da4e3315 100644 --- a/src/OutputFileHandler.cc +++ b/src/OutputFileHandler.cc @@ -250,6 +250,7 @@ void OutputFileHandler::write_EoR_file() { EoR_file.close(); run_NOrbits_ = 0; run_NFiles_ = 0; + current_index_ = 0; } void OutputFileHandler::check_if_all_raw_written() { diff --git a/src/OutputFileHandler.h b/src/OutputFileHandler.h index 14043011fc58235cdb2eb8da570458dcd59de15e..1929cc23984adbeeb4c993409d7a3614b4fc737c 100644 --- a/src/OutputFileHandler.h +++ b/src/OutputFileHandler.h @@ -95,6 +95,26 @@ class OutputFileHandler { int nOrbitsPerFile_; }; + public: + size_t getLumisectionFileSize() { return ls_file_size_; } + uint32_t getLumisectionNOrbits() { return ls_NOrbits_; } + uint32_t getLumisectionNFiles() { return ls_NFiles_; } + uint32_t getRunNOrbits() { return run_NOrbits_; } + + void updateLumisectionFileSize(size_t file_size) { ls_file_size_ += file_size; } + void updateLumisectionNOrbits(uint32_t NOrbits) { ls_NOrbits_ += NOrbits; } + void updateLumisectionNFiles(uint32_t NFiles) { ls_NFiles_ += NFiles; } + void updateRunNOrbits(uint32_t NOrbits) { run_NOrbits_ += NOrbits; } + void updateRunNFiles(uint32_t NFiles) { run_NFiles_ += NFiles; } + + void setLumisectionFileSize(size_t file_size) { ls_file_size_ = file_size; } + void setLumisectionNOrbits(uint32_t NOrbits) { ls_NOrbits_ = NOrbits; } + void setLumisectionNFiles(uint32_t NFiles) { ls_NFiles_ = NFiles; } + void setRunNOrbits(uint32_t NOrbits) { run_NOrbits_ = NOrbits; } + void setRunNFiles(uint32_t NFiles) { run_NFiles_ = NFiles; } + + void setCurrentRunNumber(int n) { current_run_number_ = n; } + private: void create_output_directory_maybe(std::string &output_directory); @@ -121,23 +141,6 @@ class OutputFileHandler { static std::atomic<bool> file_handler_running_; - size_t getLumisectionFileSize() { return ls_file_size_; } - uint32_t getLumisectionNOrbits() { return ls_NOrbits_; } - uint32_t getLumisectionNFiles() { return ls_NFiles_; } - uint32_t getRunNOrbits() { return run_NOrbits_; } - - void updateLumisectionFileSize(size_t file_size) { ls_file_size_ += file_size; } - void updateLumisectionNOrbits(uint32_t NOrbits) { ls_NOrbits_ += NOrbits; } - void updateLumisectionNFiles(uint32_t NFiles) { ls_NFiles_ += NFiles; } - void updateRunNOrbits(uint32_t NOrbits) { run_NOrbits_ += NOrbits; } - void updateRunNFiles(uint32_t NFiles) { run_NFiles_ += NFiles; } - - void setLumisectionFileSize(size_t file_size) { ls_file_size_ = file_size; } - void setLumisectionNOrbits(uint32_t NOrbits) { ls_NOrbits_ = NOrbits; } - void setLumisectionNFiles(uint32_t NFiles) { ls_NFiles_ = NFiles; } - void setRunNOrbits(uint32_t NOrbits) { run_NOrbits_ = NOrbits; } - void setRunNFiles(uint32_t NFiles) { run_NFiles_ = NFiles; } - std::string base_path_; std::string run_dir_; std::string filename_prefix_; @@ -154,7 +157,7 @@ class OutputFileHandler { int numPipelines_; std::thread t; const uint32_t max_index_per_ls_; - size_t ls_file_size_; + size_t ls_file_size_{}; size_t file_size_{}; uint32_t NOrbits_{}; uint32_t ls_NOrbits_{};