diff --git a/sf-writer/src/main.cpp b/sf-writer/src/main.cpp index 8a1c6f8..3c8db4c 100644 --- a/sf-writer/src/main.cpp +++ b/sf-writer/src/main.cpp @@ -21,39 +21,36 @@ using namespace chrono; void read_buffer( const string device, const string channel_name, - const vector& blocks) + const vector& buffer_blocks) { BufferBinaryReader block_reader(device, channel_name); + auto block_buffer = new BufferBinaryBlock(); - - - // "<= stop_block" because we include the stop_block in the transfer. - for (uint64_t curr_block=start_block; - curr_block <= stop_block; - curr_block++) { - - int slot_id; - while((slot_id = queue.reserve()) == -1) { - this_thread::sleep_for(chrono::milliseconds( - RB_READ_RETRY_INTERVAL_MS)); - } - + for (uint64_t block_number:buffer_blocks) { auto start_time = steady_clock::now(); - auto block_buffer = queue.get_metadata_buffer(slot_id); - - block_reader.get_block(curr_block, block_buffer); + block_reader.get_block(block_number, block_buffer); auto end_time = steady_clock::now(); uint64_t read_us_duration = duration_cast( end_time-start_time).count(); - queue.commit(); + start_time = steady_clock::now(); + + // TODO: Send to composition. + + end_time = steady_clock::now(); + uint64_t compose_us_duration = duration_cast( + end_time-start_time).count(); // TODO: Proper statistics cout << "sf_replay:avg_read_us "; cout << read_us_duration / BUFFER_BLOCK_SIZE << endl; + cout << "sf_replay:avg_compose_us "; + cout << compose_us_duration / BUFFER_BLOCK_SIZE << endl; } + + delete block_buffer; } int main (int argc, char *argv[]) @@ -92,9 +89,7 @@ int main (int argc, char *argv[]) std::vector reading_threads(n_modules); for (size_t i_module=0; i_modulen_images; i++) { - if (metadata->pulse_id[i] != current_pulse_id) { - throw runtime_error("Wrong pulse id from receiver thread."); - } - - current_pulse_id++; - } - - auto end_time = chrono::steady_clock::now(); - auto read_us_duration = chrono::duration_cast( - end_time-start_time).count(); - - start_time = chrono::steady_clock::now(); + auto start_time = steady_clock::now(); writer.write(metadata, data); - end_time = chrono::steady_clock::now(); + auto end_time = steady_clock::now(); auto write_us_duration = chrono::duration_cast( end_time-start_time).count(); queue.release(); - auto avg_read_us = read_us_duration / metadata->n_images;; - auto avg_write_us = write_us_duration / metadata->n_images;; - - cout << "sf_writer:avg_read_us " << avg_read_us; - cout << " sf_writer:avg_write_us " << avg_write_us; - cout << endl; + cout << "sf_writer:avg_write_us "; + cout << write_us_duration / BUFFER_BLOCK_SIZE << endl; } writer.close_file();