9#include <boost/asio/awaitable.hpp>
10#include <boost/asio/steady_timer.hpp>
14#include <gsl/gsl-lite.hpp>
17#include <spdlog/logger.h>
22#include <oneapi/tbb/concurrent_queue.h>
24#include <tbb/concurrent_queue.h>
57 std::chrono::time_point<std::chrono::steady_clock>
last_print_time_ = std::chrono::steady_clock::now();
80 explicit Handler(
App* control, std::size_t n_lines = 1);
113 writers_.set_output_filenames(filenames);
134 tbb::concurrent_bounded_queue<process::SerializableMsgBuffer>
data_queue_;
The primary interface class of SRS-Control.
uint64_t last_frame_counts_
std::string write_speed_string_
double current_received_bytes_MBps_
void set_display_period(std::chrono::milliseconds duration)
std::chrono::milliseconds period_
std::string drop_speed_string_
uint64_t last_write_data_bytes_
double current_write_bytes_MBps_
std::chrono::time_point< std::chrono::steady_clock > last_print_time_
asio::steady_timer clock_
auto get_processed_hit_rate() const -> double
gsl::not_null< Handler * > processor_
DataMonitor(Handler *processor, io_context_type *io_context)
void show_data_speed(bool val=true)
std::shared_ptr< spdlog::logger > console_
double current_drop_bytes_MBps_
uint64_t last_read_data_bytes_
auto print_cycle() -> asio::awaitable< void >
auto get_received_bytes_MBps() const -> double
uint64_t last_processed_hit_num_
gsl::not_null< io_context_type * > io_context_
uint64_t last_drop_data_bytes_
std::string read_speed_string_
void read_data_once(std::span< BufferElementType > read_data)
std::size_t received_data_size_
auto get_data_workflow() const -> const TaskDiagram &
tbb::concurrent_bounded_queue< process::SerializableMsgBuffer > data_queue_
void set_monitor_display_period(std::chrono::milliseconds duration)
std::atomic< uint64_t > total_read_data_bytes_
Handler(const Handler &)=delete
auto get_frame_counts() const -> uint64_t
auto get_processed_hit_number() const -> uint64_t
void set_n_pipelines(std::size_t n_lines)
auto get_data_monitor() const -> const auto &
Handler & operator=(Handler &&)=delete
Handler(App *control, std::size_t n_lines=1)
std::unique_ptr< TaskDiagram > task_diagram_
Handler & operator=(const Handler &)=delete
std::atomic< uint64_t > total_processed_hit_numer_
gsl::not_null< App * > app_
Handler(Handler &&)=delete
common::DataPrintMode print_mode_
std::atomic< bool > is_stopped_
auto get_read_data_bytes() const -> uint64_t
auto get_n_lines() const -> auto
std::atomic< uint64_t > total_drop_data_bytes_
auto get_writer() -> auto *
void set_output_filenames(const std::vector< std::string > &filenames)
void set_print_mode(common::DataPrintMode mode)
std::atomic< uint64_t > total_frame_counts_
void set_show_data_speed(bool val=true)
auto get_drop_data_bytes() const -> uint64_t
constexpr auto DEFAULT_DISPLAY_PERIOD
DataPrintMode
Print mode of the status line.
@ print_speed
Print the data reading rate.
asio::thread_pool io_context_type