mirror of
https://github.com/paulscherrerinstitute/sf_daq_buffer.git
synced 2026-05-07 20:52:05 +02:00
Made BufferUtils a first class citizen
This commit is contained in:
@@ -5,7 +5,7 @@
|
||||
#include <cerrno>
|
||||
#include <chrono>
|
||||
#include <cstring>
|
||||
#include <buffer_utils.hpp>
|
||||
#include <BufferUtils.hpp>
|
||||
#include <fcntl.h>
|
||||
|
||||
using namespace std;
|
||||
@@ -40,14 +40,14 @@ BinaryWriter::~BinaryWriter()
|
||||
void BinaryWriter::write(uint64_t pulse_id, const JFFileFormat* buffer)
|
||||
{
|
||||
auto current_frame_file =
|
||||
get_filename(root_folder_, device_name_, pulse_id);
|
||||
BufferUtils::get_filename(root_folder_, device_name_, pulse_id);
|
||||
|
||||
if (current_frame_file != current_output_filename_) {
|
||||
open_file(current_frame_file);
|
||||
}
|
||||
|
||||
size_t n_bytes_offset =
|
||||
get_file_frame_index(pulse_id) * sizeof(JFFileFormat);
|
||||
BufferUtils::get_file_frame_index(pulse_id) * sizeof(JFFileFormat);
|
||||
|
||||
auto lseek_result = lseek(output_file_fd_, n_bytes_offset, SEEK_SET);
|
||||
if (lseek_result < 0) {
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
using namespace std;
|
||||
|
||||
#include "BufferUtils.hpp"
|
||||
#include <sstream>
|
||||
|
||||
const size_t BufferUtils::FILE_MOD = 1000;
|
||||
const size_t BufferUtils::FOLDER_MOD = 100000;
|
||||
|
||||
string BufferUtils::get_filename(
|
||||
std::string root_folder,
|
||||
std::string device_name,
|
||||
uint64_t pulse_id)
|
||||
{
|
||||
uint64_t folder_base = pulse_id / FOLDER_MOD;
|
||||
folder_base *= FOLDER_MOD;
|
||||
|
||||
uint64_t file_base = pulse_id / FILE_MOD;
|
||||
file_base *= FILE_MOD;
|
||||
|
||||
stringstream folder;
|
||||
folder << root_folder << "/";
|
||||
folder << device_name << "/";
|
||||
folder << folder_base << "/";
|
||||
folder << file_base << ".bin";
|
||||
|
||||
return folder.str();
|
||||
}
|
||||
|
||||
size_t BufferUtils::get_file_frame_index(uint64_t pulse_id)
|
||||
{
|
||||
uint64_t file_base = pulse_id / FILE_MOD;
|
||||
file_base *= FILE_MOD;
|
||||
|
||||
return pulse_id - file_base;
|
||||
}
|
||||
Reference in New Issue
Block a user