mirror of
https://github.com/paulscherrerinstitute/sf_daq_buffer.git
synced 2026-04-21 13:44:34 +02:00
Update buffer folder and files naming convention
All references to folders and files inside buffer were updated. - Base folder to write detector: detector_folder - Name of the modules inside detector_folder: module_name - Data grouping folders based on pulse_id: data_folder - Data grouping files, based on pulse_id: data_file
This commit is contained in:
@@ -7,8 +7,8 @@
|
||||
namespace BufferUtils
|
||||
{
|
||||
std::string get_filename(
|
||||
std::string root_folder,
|
||||
std::string device_name,
|
||||
std::string detector_folder,
|
||||
std::string module_name,
|
||||
uint64_t pulse_id);
|
||||
|
||||
std::size_t get_file_frame_index(uint64_t pulse_id);
|
||||
|
||||
@@ -6,21 +6,21 @@
|
||||
using namespace std;
|
||||
|
||||
string BufferUtils::get_filename(
|
||||
std::string root_folder,
|
||||
std::string device_name,
|
||||
std::string detector_folder,
|
||||
std::string module_name,
|
||||
uint64_t pulse_id)
|
||||
{
|
||||
uint64_t folder_base = pulse_id / buffer_config::FOLDER_MOD;
|
||||
folder_base *= buffer_config::FOLDER_MOD;
|
||||
uint64_t data_folder = pulse_id / buffer_config::FOLDER_MOD;
|
||||
data_folder *= buffer_config::FOLDER_MOD;
|
||||
|
||||
uint64_t file_base = pulse_id / buffer_config::FILE_MOD;
|
||||
file_base *= buffer_config::FILE_MOD;
|
||||
uint64_t data_file = pulse_id / buffer_config::FILE_MOD;
|
||||
data_file *= buffer_config::FILE_MOD;
|
||||
|
||||
stringstream folder;
|
||||
folder << root_folder << "/";
|
||||
folder << device_name << "/";
|
||||
folder << folder_base << "/";
|
||||
folder << file_base << buffer_config::FILE_EXTENSION;
|
||||
folder << detector_folder << "/";
|
||||
folder << module_name << "/";
|
||||
folder << data_folder << "/";
|
||||
folder << data_file << buffer_config::FILE_EXTENSION;
|
||||
|
||||
return folder.str();
|
||||
}
|
||||
|
||||
@@ -9,33 +9,33 @@ TEST(BufferUtils, get_filename)
|
||||
auto expected_file = "/root/device-1/12300000/12345000" +
|
||||
buffer_config::FILE_EXTENSION;
|
||||
|
||||
auto root_folder = "/root";
|
||||
auto device_name = "device-1";
|
||||
auto detector_folder = "/root";
|
||||
auto module_name = "device-1";
|
||||
|
||||
auto result = BufferUtils::get_filename(
|
||||
root_folder,
|
||||
device_name,
|
||||
detector_folder,
|
||||
module_name,
|
||||
12345000);
|
||||
|
||||
ASSERT_EQ(result, expected_file);
|
||||
|
||||
auto result2 = BufferUtils::get_filename(
|
||||
root_folder,
|
||||
device_name,
|
||||
detector_folder,
|
||||
module_name,
|
||||
12345999);
|
||||
|
||||
ASSERT_EQ(result2, expected_file);
|
||||
|
||||
auto result3 = BufferUtils::get_filename(
|
||||
root_folder,
|
||||
device_name,
|
||||
detector_folder,
|
||||
module_name,
|
||||
12346000);
|
||||
|
||||
ASSERT_NE(result3, expected_file);
|
||||
|
||||
auto result4 = BufferUtils::get_filename(
|
||||
root_folder,
|
||||
device_name,
|
||||
detector_folder,
|
||||
module_name,
|
||||
12344999);
|
||||
|
||||
ASSERT_NE(result4, expected_file);
|
||||
|
||||
+12
-12
@@ -19,13 +19,13 @@ using namespace writer_config;
|
||||
using namespace buffer_config;
|
||||
|
||||
void read_buffer(
|
||||
const string device,
|
||||
const string channel_name,
|
||||
const string detector_folder,
|
||||
const string module_name,
|
||||
const int i_module,
|
||||
const vector<uint64_t>& buffer_blocks,
|
||||
ImageAssembler& image_assembler)
|
||||
{
|
||||
BufferBinaryReader block_reader(device, channel_name);
|
||||
BufferBinaryReader block_reader(detector_folder, module_name);
|
||||
auto block_buffer = new BufferBinaryBlock();
|
||||
|
||||
for (uint64_t block_id:buffer_blocks) {
|
||||
@@ -63,11 +63,11 @@ int main (int argc, char *argv[])
|
||||
{
|
||||
if (argc != 7) {
|
||||
cout << endl;
|
||||
cout << "Usage: sf_writer [output_file] [device] [n_modules]";
|
||||
cout << "Usage: sf_writer [output_file] [detector_folder] [n_modules]";
|
||||
cout << " [start_pulse_id] [stop_pulse_id] [pulse_id_step]";
|
||||
cout << endl;
|
||||
cout << "\toutput_file: Complete path to the output file." << endl;
|
||||
cout << "\tdevice: Name of detector." << endl;
|
||||
cout << "\tdetector_folder: Absolute path to detector buffer." << endl;
|
||||
cout << "\tn_modules: number of modules" << endl;
|
||||
cout << "\tstart_pulse_id: Start pulse_id of retrieval." << endl;
|
||||
cout << "\tstop_pulse_id: Stop pulse_id of retrieval." << endl;
|
||||
@@ -78,7 +78,7 @@ int main (int argc, char *argv[])
|
||||
}
|
||||
|
||||
string output_file = string(argv[1]);
|
||||
const string device = string(argv[2]);
|
||||
const string detector_folder = string(argv[2]);
|
||||
size_t n_modules = atoi(argv[3]);
|
||||
uint64_t start_pulse_id = (uint64_t) atoll(argv[4]);
|
||||
uint64_t stop_pulse_id = (uint64_t) atoll(argv[5]);
|
||||
@@ -107,22 +107,22 @@ int main (int argc, char *argv[])
|
||||
for (size_t i_module=0; i_module<n_modules; i_module++) {
|
||||
|
||||
// TODO: Very ugly. Fix.
|
||||
string channel_name = "M";
|
||||
string module_name = "M";
|
||||
if (i_module < 10) {
|
||||
channel_name += "0";
|
||||
module_name += "0";
|
||||
}
|
||||
channel_name += to_string(i_module);
|
||||
module_name += to_string(i_module);
|
||||
|
||||
reading_threads.emplace_back(
|
||||
read_buffer,
|
||||
device,
|
||||
channel_name,
|
||||
detector_folder,
|
||||
module_name,
|
||||
i_module,
|
||||
ref(buffer_blocks),
|
||||
ref(image_assembler));
|
||||
}
|
||||
|
||||
JFH5Writer writer(output_file, device, n_modules,
|
||||
JFH5Writer writer(output_file, detector_folder, n_modules,
|
||||
start_pulse_id, stop_pulse_id, pulse_id_step);
|
||||
|
||||
for (uint64_t block_id:buffer_blocks) {
|
||||
|
||||
@@ -10,8 +10,8 @@ class BufferBinaryWriter {
|
||||
const size_t MAX_FILE_BYTES =
|
||||
buffer_config::FILE_MOD * sizeof(BufferBinaryFormat);
|
||||
|
||||
const std::string root_folder_;
|
||||
const std::string device_name_;
|
||||
const std::string detector_folder_;
|
||||
const std::string module_name_;
|
||||
std::string latest_filename_;
|
||||
|
||||
std::string current_output_filename_;
|
||||
@@ -23,8 +23,8 @@ class BufferBinaryWriter {
|
||||
|
||||
public:
|
||||
BufferBinaryWriter(
|
||||
const std::string& root_folder,
|
||||
const std::string& device_name);
|
||||
const std::string& detector_folder,
|
||||
const std::string& module_name);
|
||||
|
||||
virtual ~BufferBinaryWriter();
|
||||
|
||||
|
||||
@@ -13,11 +13,11 @@
|
||||
using namespace std;
|
||||
|
||||
BufferBinaryWriter::BufferBinaryWriter(
|
||||
const string& root_folder,
|
||||
const string& device_name):
|
||||
root_folder_(root_folder),
|
||||
device_name_(device_name),
|
||||
latest_filename_(root_folder + "/" + device_name + "/LATEST"),
|
||||
const string& detector_folder,
|
||||
const string& module_name):
|
||||
detector_folder_(detector_folder),
|
||||
module_name_(module_name),
|
||||
latest_filename_(detector_folder + "/" + module_name + "/LATEST"),
|
||||
current_output_filename_(""),
|
||||
output_file_fd_(-1)
|
||||
{
|
||||
@@ -33,7 +33,7 @@ void BufferBinaryWriter::write(
|
||||
const BufferBinaryFormat* buffer)
|
||||
{
|
||||
auto current_frame_file =
|
||||
BufferUtils::get_filename(root_folder_, device_name_, pulse_id);
|
||||
BufferUtils::get_filename(detector_folder_, module_name_, pulse_id);
|
||||
|
||||
if (current_frame_file != current_output_filename_) {
|
||||
open_file(current_frame_file);
|
||||
|
||||
@@ -5,11 +5,11 @@
|
||||
|
||||
TEST(BinaryWriter, basic_interaction)
|
||||
{
|
||||
auto root_folder = ".";
|
||||
auto device_name = "test_device";
|
||||
auto detector_folder = ".";
|
||||
auto module_name = "test_device";
|
||||
uint64_t pulse_id = 5;
|
||||
|
||||
BufferBinaryWriter writer(device_name, root_folder);
|
||||
BufferBinaryWriter writer(module_name, detector_folder);
|
||||
|
||||
BufferBinaryFormat frame_data;
|
||||
frame_data.metadata.pulse_id = 1;
|
||||
@@ -20,7 +20,7 @@ TEST(BinaryWriter, basic_interaction)
|
||||
writer.write(5, &frame_data);
|
||||
|
||||
auto output_filename =
|
||||
BufferUtils::get_filename(root_folder, device_name, pulse_id);
|
||||
BufferUtils::get_filename(detector_folder, module_name, pulse_id);
|
||||
|
||||
auto read_fd = open(output_filename.c_str(), O_RDONLY);
|
||||
ASSERT_NE(read_fd, -1);
|
||||
@@ -42,11 +42,11 @@ TEST(BinaryWriter, basic_interaction)
|
||||
|
||||
TEST(BinaryWriter, test_format_marker)
|
||||
{
|
||||
auto root_folder = ".";
|
||||
auto device_name = "test_device";
|
||||
auto detector_folder = ".";
|
||||
auto module_name = "M0";
|
||||
uint64_t pulse_id = 5;
|
||||
|
||||
BufferBinaryWriter writer(device_name, root_folder);
|
||||
BufferBinaryWriter writer(module_name, detector_folder);
|
||||
|
||||
BufferBinaryFormat frame_data;
|
||||
frame_data.metadata.pulse_id = 1;
|
||||
@@ -57,7 +57,7 @@ TEST(BinaryWriter, test_format_marker)
|
||||
writer.write(5, &frame_data);
|
||||
|
||||
auto output_filename =
|
||||
BufferUtils::get_filename(root_folder, device_name, pulse_id);
|
||||
BufferUtils::get_filename(detector_folder, module_name, pulse_id);
|
||||
|
||||
auto read_fd = open(output_filename.c_str(), O_RDONLY);
|
||||
ASSERT_NE(read_fd, -1);
|
||||
|
||||
@@ -6,8 +6,8 @@
|
||||
|
||||
class BufferBinaryReader {
|
||||
|
||||
const std::string root_folder_;
|
||||
const std::string device_name_;
|
||||
const std::string detector_folder_;
|
||||
const std::string module_name_;
|
||||
|
||||
std::string current_input_file_;
|
||||
int input_file_fd_;
|
||||
@@ -16,8 +16,8 @@ class BufferBinaryReader {
|
||||
void close_current_file();
|
||||
|
||||
public:
|
||||
BufferBinaryReader(const std::string &root_folder,
|
||||
const std::string &device_name);
|
||||
BufferBinaryReader(const std::string &detector_folder,
|
||||
const std::string &module_name);
|
||||
|
||||
~BufferBinaryReader();
|
||||
|
||||
|
||||
@@ -14,12 +14,12 @@ using namespace writer_config;
|
||||
using namespace buffer_config;
|
||||
|
||||
BufferBinaryReader::BufferBinaryReader(
|
||||
const std::string &root_folder,
|
||||
const std::string &device_name) :
|
||||
root_folder_(root_folder),
|
||||
device_name_(device_name),
|
||||
current_input_file_(""),
|
||||
input_file_fd_(-1)
|
||||
const std::string &detector_folder,
|
||||
const std::string &module_name) :
|
||||
detector_folder_(detector_folder),
|
||||
module_name_(module_name),
|
||||
current_input_file_(""),
|
||||
input_file_fd_(-1)
|
||||
{}
|
||||
|
||||
BufferBinaryReader::~BufferBinaryReader()
|
||||
@@ -32,7 +32,7 @@ void BufferBinaryReader::get_block(
|
||||
{
|
||||
uint64_t block_start_pulse_id = block_id * BUFFER_BLOCK_SIZE;
|
||||
auto current_block_file = BufferUtils::get_filename(
|
||||
root_folder_, device_name_, block_start_pulse_id);
|
||||
detector_folder_, module_name_, block_start_pulse_id);
|
||||
|
||||
if (current_block_file != current_input_file_) {
|
||||
open_file(current_block_file);
|
||||
|
||||
+13
-13
@@ -19,13 +19,13 @@ using namespace writer_config;
|
||||
using namespace buffer_config;
|
||||
|
||||
void read_buffer(
|
||||
const string device,
|
||||
const string channel_name,
|
||||
const string detector_folder,
|
||||
const string module_name,
|
||||
const int i_module,
|
||||
const vector<uint64_t>& buffer_blocks,
|
||||
ImageAssembler& image_assembler)
|
||||
{
|
||||
BufferBinaryReader block_reader(device, channel_name);
|
||||
BufferBinaryReader block_reader(detector_folder, module_name);
|
||||
auto block_buffer = new BufferBinaryBlock();
|
||||
|
||||
for (uint64_t block_id:buffer_blocks) {
|
||||
@@ -63,11 +63,11 @@ int main (int argc, char *argv[])
|
||||
{
|
||||
if (argc != 7) {
|
||||
cout << endl;
|
||||
cout << "Usage: sf_writer [output_file] [device] [n_modules]";
|
||||
cout << "Usage: sf_writer [output_file] [detector_folder] [n_modules]";
|
||||
cout << " [start_pulse_id] [stop_pulse_id] [pulse_id_step]";
|
||||
cout << endl;
|
||||
cout << "\toutput_file: Complete path to the output file." << endl;
|
||||
cout << "\tdevice: Name of detector." << endl;
|
||||
cout << "\tdetector_folder: Absolute path to detector buffer." << endl;
|
||||
cout << "\tn_modules: number of modules" << endl;
|
||||
cout << "\tstart_pulse_id: Start pulse_id of retrieval." << endl;
|
||||
cout << "\tstop_pulse_id: Stop pulse_id of retrieval." << endl;
|
||||
@@ -78,7 +78,7 @@ int main (int argc, char *argv[])
|
||||
}
|
||||
|
||||
string output_file = string(argv[1]);
|
||||
const string device = string(argv[2]);
|
||||
const string detector_folder = string(argv[2]);
|
||||
size_t n_modules = atoi(argv[3]);
|
||||
uint64_t start_pulse_id = (uint64_t) atoll(argv[4]);
|
||||
uint64_t stop_pulse_id = (uint64_t) atoll(argv[5]);
|
||||
@@ -107,23 +107,23 @@ int main (int argc, char *argv[])
|
||||
for (size_t i_module=0; i_module<n_modules; i_module++) {
|
||||
|
||||
// TODO: Very ugly. Fix.
|
||||
string channel_name = "M";
|
||||
string module_name = "M";
|
||||
if (i_module < 10) {
|
||||
channel_name += "0";
|
||||
module_name += "0";
|
||||
}
|
||||
channel_name += to_string(i_module);
|
||||
module_name += to_string(i_module);
|
||||
|
||||
reading_threads.emplace_back(
|
||||
read_buffer,
|
||||
device,
|
||||
channel_name,
|
||||
detector_folder,
|
||||
module_name,
|
||||
i_module,
|
||||
ref(buffer_blocks),
|
||||
ref(image_assembler));
|
||||
}
|
||||
|
||||
JFH5Writer writer(output_file, device, n_modules,
|
||||
start_pulse_id, stop_pulse_id, pulse_id_step);
|
||||
JFH5Writer writer(output_file, detector_folder, n_modules,
|
||||
start_pulse_id, stop_pulse_id, pulse_id_step);
|
||||
|
||||
for (uint64_t block_id:buffer_blocks) {
|
||||
|
||||
|
||||
Reference in New Issue
Block a user