Move parameters type storage to Manager

This commit is contained in:
2018-01-24 15:04:43 +01:00
parent 9f82c9c260
commit 3f12acf9d0
5 changed files with 19 additions and 12 deletions
+7 -3
View File
@@ -4,8 +4,8 @@
using namespace std;
WriterManager::WriterManager(uint64_t n_images):
n_images(n_images), running_flag(true), n_received_frames(0), n_written_frames(0)
WriterManager::WriterManager(map<string, DATA_TYPE>* parameters_type, uint64_t n_images):
parameters_type(parameters_type), n_images(n_images), running_flag(true), n_received_frames(0), n_written_frames(0)
{
#ifdef DEBUG_OUTPUT
cout << "[WriterManager::WriterManager] Writer manager for n_images " << n_images << endl;
@@ -41,7 +41,7 @@ map<string, uint64_t> WriterManager::get_statistics()
return result;
}
std::map<std::string, boost::any>& WriterManager::get_parameters(){
map<string, boost::any>& WriterManager::get_parameters(){
return parameters;
}
@@ -55,6 +55,10 @@ void WriterManager::set_parameters(map<string, boost::any>& new_parameters)
}
}
map<string, DATA_TYPE>* WriterManager::get_parameters_type() {
return parameters_type;
}
bool WriterManager::is_running()
{
// Take into account n_images only if it is <> 0.
+5 -1
View File
@@ -6,22 +6,26 @@
#include <atomic>
#include <boost/any.hpp>
#include "H5Format.hpp"
class WriterManager
{
std::map<std::string, boost::any> parameters = {};
// Initialize in constructor.
std::map<std::string, DATA_TYPE>* parameters_type;
size_t n_images;
std::atomic_bool running_flag;
std::atomic<uint64_t> n_received_frames;
std::atomic<uint64_t> n_written_frames;
public:
WriterManager(uint64_t n_images=0);
WriterManager(std::map<std::string, DATA_TYPE>* parameters_type, uint64_t n_images=0);
void stop();
bool is_running();
std::string get_status();
std::map<std::string, DATA_TYPE>* get_parameters_type();
std::map<std::string, boost::any>& get_parameters();
void set_parameters(std::map<std::string, boost::any>& new_parameters);
+2 -2
View File
@@ -141,7 +141,7 @@ void run_writer(string connect_address, string output_file, uint64_t n_images, u
int n_io_threads = config::zmq_n_io_threads;
int receive_timeout = config::zmq_receive_timeout;
WriterManager manager(n_images);
WriterManager manager(get_input_value_type(), n_images);
RingBuffer ring_buffer(n_slots);
// TODO: Remove this. This is needed only for testing.
@@ -228,7 +228,7 @@ void run_writer(string connect_address, string output_file, uint64_t n_images, u
boost::thread receiver_thread(receive_zmq, &manager, &ring_buffer, connect_address, n_io_threads, receive_timeout);
boost::thread writer_thread(write_h5, &manager, &ring_buffer, output_file);
start_rest_api(manager, rest_port, get_input_value_type());
start_rest_api(manager, rest_port);
#ifdef DEBUG_OUTPUT
cout << "[h5_zmq_writer::run_writer] Rest API stopped." << endl;
+4 -3
View File
@@ -6,7 +6,7 @@
using namespace std;
void start_rest_api(WriterManager& writer_manager, uint16_t port, std::map<std::string, DATA_TYPE>* input_value_type)
void start_rest_api(WriterManager& writer_manager, uint16_t port)
{
#ifdef DEBUG_OUTPUT
@@ -59,6 +59,7 @@ void start_rest_api(WriterManager& writer_manager, uint16_t port, std::map<std::
CROW_ROUTE (app, "/parameters").methods("GET"_method, "POST"_method) ([&](const crow::request& req){
crow::json::wvalue result;
auto parameters_type = writer_manager.get_parameters_type();
if (req.method == "GET"_method) {
@@ -67,7 +68,7 @@ void start_rest_api(WriterManager& writer_manager, uint16_t port, std::map<std::
auto parameter_value = item.second;
try {
auto parameter_type = input_value_type->at(parameter_name);
auto parameter_type = parameters_type->at(parameter_name);
if (parameter_type == NX_FLOAT) {
result[parameter_name] = boost::any_cast<double>(parameter_value);
@@ -104,7 +105,7 @@ void start_rest_api(WriterManager& writer_manager, uint16_t port, std::map<std::
string parameter_name = item.key();
try{
auto parameter_type = input_value_type->at(parameter_name);
auto parameter_type = parameters_type->at(parameter_name);
if (parameter_type == NX_FLOAT) {
new_parameters[parameter_name] = item.d();
+1 -3
View File
@@ -2,8 +2,6 @@
#define REST_INTERFACE_H
#include "WriterManager.hpp"
#include "H5Format.hpp"
void start_rest_api(WriterManager& writer_manager, uint16_t port, std::map<std::string, DATA_TYPE>* input_value_type);
void start_rest_api(WriterManager& writer_manager, uint16_t port);
#endif