Add back n_slots to RamBuffer

In tests you don't want it to consume all your ram.
This commit is contained in:
2020-09-04 12:45:59 +02:00
parent 4a031d6e62
commit 352aefef26
2 changed files with 10 additions and 6 deletions
+3 -1
View File
@@ -8,6 +8,7 @@ class RamBuffer {
const std::string detector_name_;
const int n_modules_;
const int module_n_;
const int n_slots_;
const size_t meta_size_;
const size_t image_size_;
@@ -22,7 +23,8 @@ class RamBuffer {
public:
RamBuffer(const std::string& detector_name,
const int n_modules,
const int module_n=0);
const int module_n=0,
const int n_slots=RAM_BUFFER_N_SLOTS);
~RamBuffer();
void write_frame(const ModuleFrame *src_meta, const char *src_data) const;
+7 -5
View File
@@ -12,13 +12,15 @@ using namespace buffer_config;
RamBuffer::RamBuffer(
const string &detector_name,
const int n_modules,
const int module_n) :
const int module_n,
const int n_slots) :
detector_name_(detector_name),
n_modules_(n_modules),
module_n_(module_n),
n_slots_(n_slots),
meta_size_(sizeof(ModuleFrame) * n_modules_),
image_size_(MODULE_N_BYTES * n_modules_),
buffer_size_((meta_size_ + image_size_) * RAM_BUFFER_N_SLOTS)
buffer_size_((meta_size_ + image_size_) * n_slots_)
{
shm_fd_ = shm_open(detector_name_.c_str(), O_RDWR | O_CREAT, 0777);
if (shm_fd_ < 0) {
@@ -37,7 +39,7 @@ RamBuffer::RamBuffer(
meta_buffer_ = (ModuleFrame *) buffer_;
// Image buffer start right after metadata buffer.
image_buffer_ = (char*)buffer_ + (meta_size_ * RAM_BUFFER_N_SLOTS);
image_buffer_ = (char*)buffer_ + (meta_size_ * n_slots_);
}
RamBuffer::~RamBuffer()
@@ -51,7 +53,7 @@ void RamBuffer::write_frame(
const ModuleFrame *src_meta,
const char *src_data) const
{
const size_t slot_n = src_meta->pulse_id % RAM_BUFFER_N_SLOTS;
const size_t slot_n = src_meta->pulse_id % n_slots_;
ModuleFrame *dst_meta = meta_buffer_ +
(meta_size_ * slot_n) +
@@ -68,7 +70,7 @@ void RamBuffer::write_frame(
char* RamBuffer::read_image(const uint64_t pulse_id,
ImageMetadata &image_meta) const
{
const size_t slot_n = pulse_id % RAM_BUFFER_N_SLOTS;
const size_t slot_n = pulse_id % n_slots_;
ModuleFrame *src_meta = meta_buffer_ +
(meta_size_ * slot_n);