diff --git a/core-buffer/include/BinaryWriter.hpp b/core-buffer/include/BinaryWriter.hpp index a039294..939ea6c 100644 --- a/core-buffer/include/BinaryWriter.hpp +++ b/core-buffer/include/BinaryWriter.hpp @@ -9,6 +9,9 @@ class BinaryWriter { const std::string device_name_; const std::string root_folder_; + std::string current_filename_; + int output_fd_; + public: BinaryWriter( const std::string& device_name, @@ -16,7 +19,7 @@ public: void write(uint64_t pulse_id, const JFFileFormat& buffer); - void close(); + void close_current_file(); }; diff --git a/core-buffer/src/BinaryWriter.cpp b/core-buffer/src/BinaryWriter.cpp index 62b7ed2..bb9783b 100644 --- a/core-buffer/src/BinaryWriter.cpp +++ b/core-buffer/src/BinaryWriter.cpp @@ -1,10 +1,20 @@ #include "BinaryWriter.hpp" +#include +#include +#include "date.h" +#include +#include +#include + +using namespace std; BinaryWriter::BinaryWriter( - const std::string& device_name, - const std::string& root_folder) : + const string& device_name, + const string& root_folder) : device_name_(device_name), - root_folder_(root_folder) + root_folder_(root_folder), + current_filename_(""), + output_fd_(-1) { } @@ -14,7 +24,21 @@ void BinaryWriter::write(uint64_t pulse_id, const JFFileFormat& buffer) } -void BinaryWriter::close() +void BinaryWriter::close_current_file() { + if (output_fd_ != -1) { + if (close(output_fd_) < 0) { + stringstream err_msg; + using namespace date; + using namespace chrono; + err_msg << "[" << system_clock::now() << "]"; + err_msg << "[BinaryWriter::close_current_file]"; + err_msg << " Error while closing file "; + err_msg << current_filename_ << ": "; + err_msg << strerror(errno) << endl; + + throw runtime_error(err_msg.str()); + } + } } \ No newline at end of file