diff --git a/owlps-positioner/src/input.cc b/owlps-positioner/src/input.cc index d6c7fd1..8d58f38 100644 --- a/owlps-positioner/src/input.cc +++ b/owlps-positioner/src/input.cc @@ -119,51 +119,52 @@ void Input::initialise_log_csv() const Request& Input::get_next_request() const { - if (! eof()) + if (eof()) + return medium->get_current_request() ; + + const Request& request = medium->get_next_request() ; + log_current_request() ; + + if (! request) + return medium->get_current_request() ; + + /* Update the current time */ + if (Configuration::is_configured("replay")) + Timestamp::update_current_time(request.get_time_sent()) ; + + /* Clean the old requests */ + unsigned int cr_timeout = + Configuration::uint_value( + "positioning.calibration-requests-timeout") ; + if (cr_timeout > 0) + Stock::delete_calibration_requests_older_than(cr_timeout) ; + + /* If the request is a calibration request, add it to the Stock */ + if (Configuration::bool_value( + "positioning.accept-new-calibration-requests")) { - const Request& request = medium->get_next_request() ; - log_current_request() ; - - /* Update the current time */ - if (Configuration::is_configured("replay")) - Timestamp::update_current_time(request.get_time_sent()) ; - - /* Clean the old requests */ - unsigned int cr_timeout = - Configuration::uint_value( - "positioning.calibration-requests-timeout") ; - if (cr_timeout > 0) - Stock::delete_calibration_requests_older_than(cr_timeout) ; - - /* If the request is a calibration request, add it to the Stock - * (if allowed, and if it is not empty) */ - if (Configuration::bool_value( - "positioning.accept-new-calibration-requests") - && request) + CalibrationRequest *calibration_request = + dynamic_cast( + const_cast(&request)) ; + if (calibration_request != NULL) { - CalibrationRequest *calibration_request = - dynamic_cast( - const_cast(&request)) ; - if (calibration_request != NULL) - { - calibration_request->reference_point_delete_requests() ; - Stock::store_calibration_request(*calibration_request) ; + calibration_request->reference_point_delete_requests() ; + Stock::store_calibration_request(*calibration_request) ; - if (Configuration::is_configured("verbose")) - cerr - << "Got a new calibration request (total " - << Stock::nb_calibration_requests() << " in " - << Stock::nb_reference_points() - << " reference points).\n" ; + if (Configuration::is_configured("verbose")) + cerr + << "Got a new calibration request (total " + << Stock::nb_calibration_requests() << " in " + << Stock::nb_reference_points() + << " reference points).\n" ; - if (Configuration::bool_value( - "positioning.generate-reference-points")) - Stock::regenerate_reference_points() ; + if (Configuration::bool_value( + "positioning.generate-reference-points")) + Stock::regenerate_reference_points() ; - if (! Configuration::bool_value( - "positioning.position-calibration-requests")) - medium->clear_current_request() ; - } + if (! Configuration::bool_value( + "positioning.position-calibration-requests")) + medium->clear_current_request() ; } }