Files
Jungfraujoch/broker/gen/api/DefaultApi.h

337 lines
18 KiB
C++

/**
* Jungfraujoch
* Jungfraujoch Broker Web API
*
* The version of the OpenAPI document: 1.0.0
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
/*
* DefaultApi.h
*
*
*/
#ifndef DefaultApi_H_
#define DefaultApi_H_
#include <pistache/http.h>
#include <pistache/router.h>
#include <pistache/http_headers.h>
#include <optional>
#include <utility>
#include "Broker_status.h"
#include "Calibration_statistics_inner.h"
#include "Dataset_settings.h"
#include "Detector_list.h"
#include "Detector_selection.h"
#include "Detector_settings.h"
#include "Error_message.h"
#include "Measurement_statistics.h"
#include "Plot.h"
#include "Plot_request.h"
#include "Rad_int_settings.h"
#include "Radial_integration_plots_inner.h"
#include "Spot_finding_settings.h"
#include <string>
namespace org::openapitools::server::api
{
class DefaultApi {
public:
explicit DefaultApi(const std::shared_ptr<Pistache::Rest::Router>& rtr);
virtual ~DefaultApi() = default;
void init();
static const std::string base;
private:
void setupRoutes();
void cancel_post_handler(const Pistache::Rest::Request &request, Pistache::Http::ResponseWriter response);
void config_detector_get_handler(const Pistache::Rest::Request &request, Pistache::Http::ResponseWriter response);
void config_detector_put_handler(const Pistache::Rest::Request &request, Pistache::Http::ResponseWriter response);
void config_rad_int_get_handler(const Pistache::Rest::Request &request, Pistache::Http::ResponseWriter response);
void config_rad_int_put_handler(const Pistache::Rest::Request &request, Pistache::Http::ResponseWriter response);
void config_select_detector_get_handler(const Pistache::Rest::Request &request, Pistache::Http::ResponseWriter response);
void config_select_detector_put_handler(const Pistache::Rest::Request &request, Pistache::Http::ResponseWriter response);
void config_spot_finding_get_handler(const Pistache::Rest::Request &request, Pistache::Http::ResponseWriter response);
void config_spot_finding_put_handler(const Pistache::Rest::Request &request, Pistache::Http::ResponseWriter response);
void deactivate_post_handler(const Pistache::Rest::Request &request, Pistache::Http::ResponseWriter response);
void initialize_post_handler(const Pistache::Rest::Request &request, Pistache::Http::ResponseWriter response);
void pedestal_post_handler(const Pistache::Rest::Request &request, Pistache::Http::ResponseWriter response);
void plot_bkg_estimate_post_handler(const Pistache::Rest::Request &request, Pistache::Http::ResponseWriter response);
void plot_error_pixel_post_handler(const Pistache::Rest::Request &request, Pistache::Http::ResponseWriter response);
void plot_image_collection_efficiency_post_handler(const Pistache::Rest::Request &request, Pistache::Http::ResponseWriter response);
void plot_indexing_rate_per_file_get_handler(const Pistache::Rest::Request &request, Pistache::Http::ResponseWriter response);
void plot_indexing_rate_post_handler(const Pistache::Rest::Request &request, Pistache::Http::ResponseWriter response);
void plot_rad_int_get_handler(const Pistache::Rest::Request &request, Pistache::Http::ResponseWriter response);
void plot_rad_int_per_file_get_handler(const Pistache::Rest::Request &request, Pistache::Http::ResponseWriter response);
void plot_receiver_delay_post_handler(const Pistache::Rest::Request &request, Pistache::Http::ResponseWriter response);
void plot_roi_sum_post_handler(const Pistache::Rest::Request &request, Pistache::Http::ResponseWriter response);
void plot_saturated_pixel_post_handler(const Pistache::Rest::Request &request, Pistache::Http::ResponseWriter response);
void plot_spot_count_post_handler(const Pistache::Rest::Request &request, Pistache::Http::ResponseWriter response);
void plot_strong_pixel_post_handler(const Pistache::Rest::Request &request, Pistache::Http::ResponseWriter response);
void start_post_handler(const Pistache::Rest::Request &request, Pistache::Http::ResponseWriter response);
void statistics_calibration_get_handler(const Pistache::Rest::Request &request, Pistache::Http::ResponseWriter response);
void statistics_data_collection_get_handler(const Pistache::Rest::Request &request, Pistache::Http::ResponseWriter response);
void status_get_handler(const Pistache::Rest::Request &request, Pistache::Http::ResponseWriter response);
void trigger_post_handler(const Pistache::Rest::Request &request, Pistache::Http::ResponseWriter response);
void wait_till_done_post_handler(const Pistache::Rest::Request &request, Pistache::Http::ResponseWriter response);
void default_api_default_handler(const Pistache::Rest::Request &request, Pistache::Http::ResponseWriter response);
const std::shared_ptr<Pistache::Rest::Router> router;
/// <summary>
/// Helper function to handle unexpected Exceptions during Parameter parsing and validation.
/// May be overridden to return custom error formats. This is called inside a catch block.
/// Important: When overriding, do not call `throw ex;`, but instead use `throw;`.
/// </summary>
virtual std::pair<Pistache::Http::Code, std::string> handleParsingException(const std::exception& ex) const noexcept;
/// <summary>
/// Helper function to handle unexpected Exceptions during processing of the request in handler functions.
/// May be overridden to return custom error formats. This is called inside a catch block.
/// Important: When overriding, do not call `throw ex;`, but instead use `throw;`.
/// </summary>
virtual std::pair<Pistache::Http::Code, std::string> handleOperationException(const std::exception& ex) const noexcept;
/// <summary>
/// Cancel running data collection
/// </summary>
/// <remarks>
/// Command will inform FPGA network card to stop pedestal or data collection at the current stage. Any frame that is currently being processed by CPU will be finished and sent to writer. Given the command is making sure to gracefully stop data acquisition and detector, it might take some time to switch back after command finished to &#x60;Idle&#x60; state. If data collection is not running, the command has no effect.
/// </remarks>
virtual void cancel_post(Pistache::Http::ResponseWriter &response) = 0;
/// <summary>
/// Get detector configuration
/// </summary>
/// <remarks>
/// Can be done anytime
/// </remarks>
virtual void config_detector_get(Pistache::Http::ResponseWriter &response) = 0;
/// <summary>
/// Change detector configuration
/// </summary>
/// <remarks>
/// Detector settings are ones that have effect on calibration, i.e., pedestal has to be collected again after changing these settings. This can only be done when detector is &#x60;Idle&#x60;, &#x60;Error&#x60; or &#x60;Inactive&#x60; states. If detector is in &#x60;Idle&#x60; state , pedestal procedure will be executed automatically - there must be no X-rays on the detector during the operation. If detector is in &#x60;Inactive&#x60; or &#x60;Error&#x60; states, new settings will be saved, but no calibration will be executed.
/// </remarks>
/// <param name="detectorSettings"> (optional)</param>
virtual void config_detector_put(const org::openapitools::server::model::Detector_settings &detectorSettings, Pistache::Http::ResponseWriter &response) = 0;
/// <summary>
/// Get data processing configuration
/// </summary>
/// <remarks>
/// Can be done anytime
/// </remarks>
virtual void config_rad_int_get(Pistache::Http::ResponseWriter &response) = 0;
/// <summary>
/// Configure radial integration
/// </summary>
/// <remarks>
/// Can be done when detector is Inactive or Idle
/// </remarks>
/// <param name="radIntSettings"> (optional)</param>
virtual void config_rad_int_put(const org::openapitools::server::model::Rad_int_settings &radIntSettings, Pistache::Http::ResponseWriter &response) = 0;
/// <summary>
/// List available detectors
/// </summary>
/// <remarks>
/// Configured detectors that can be selected by used
/// </remarks>
virtual void config_select_detector_get(Pistache::Http::ResponseWriter &response) = 0;
/// <summary>
/// Select detector
/// </summary>
/// <remarks>
/// Jungfraujoch allows to control multiple detectors and/or region-of-interests. The command allows to choose one detector from the list (ID has to be consistent with one provided by GET response). Changing detector will set detector to &#x60;Inactive&#x60; state and will require reinitialization.
/// </remarks>
/// <param name="detectorSelection"> (optional)</param>
virtual void config_select_detector_put(const org::openapitools::server::model::Detector_selection &detectorSelection, Pistache::Http::ResponseWriter &response) = 0;
/// <summary>
/// Get data processing configuration
/// </summary>
/// <remarks>
/// Can be done anytime
/// </remarks>
virtual void config_spot_finding_get(Pistache::Http::ResponseWriter &response) = 0;
/// <summary>
/// Configure spot finding
/// </summary>
/// <remarks>
/// Can be done anytime, also while data collection is running
/// </remarks>
/// <param name="spotFindingSettings"> (optional)</param>
virtual void config_spot_finding_put(const org::openapitools::server::model::Spot_finding_settings &spotFindingSettings, Pistache::Http::ResponseWriter &response) = 0;
/// <summary>
/// Prepare detector to turn off
/// </summary>
/// <remarks>
/// Should be in &#x60;Idle&#x60; or &#x60;Error&#x60; state. Command deactivates data acquisition and turns off detector high voltage and ASIC. Should be used always before turning off power from the detector.
/// </remarks>
virtual void deactivate_post(Pistache::Http::ResponseWriter &response) = 0;
/// <summary>
/// Initialize detector and data acquisition
/// </summary>
/// <remarks>
/// Should be used in two cases: - Detector is in &#x60;Inactive&#x60; state - Detector is in &#x60;Error&#x60; state X-ray shutter must be closed. This operation will reconfigure network interface of the detector. During operation of the detector it is recommended to use the &#x60;POST /pedestal&#x60; operation instead. If storage cells are used, the execution time might be few minutes. This is async function - one needs to use &#x60;POST /wait_till_done&#x60; to ensure operation is done.
/// </remarks>
virtual void initialize_post(Pistache::Http::ResponseWriter &response) = 0;
/// <summary>
/// Collect dark current for the detector
/// </summary>
/// <remarks>
/// Updates calibration of the JUNGFRAU detector. Must be in &#x60;Idle&#x60; state. X-ray shutter must be closed. Recommended to run once per hour for long integration times (&gt; 100 us). This is async function - one needs to use &#x60;POST /wait_till_done&#x60; to ensure operation is done.
/// </remarks>
virtual void pedestal_post(Pistache::Http::ResponseWriter &response) = 0;
/// <summary>
/// Generate background estimate plot
/// </summary>
/// <remarks>
/// Mean intensity for d &#x3D; 3 - 5 A per image; binning is configurable
/// </remarks>
/// <param name="plotRequest"> (optional)</param>
virtual void plot_bkg_estimate_post(const org::openapitools::server::model::Plot_request &plotRequest, Pistache::Http::ResponseWriter &response) = 0;
/// <summary>
/// Generate error pixels plot
/// </summary>
/// <remarks>
/// Count of error pixels per image; binning is configurable
/// </remarks>
/// <param name="plotRequest"> (optional)</param>
virtual void plot_error_pixel_post(const org::openapitools::server::model::Plot_request &plotRequest, Pistache::Http::ResponseWriter &response) = 0;
/// <summary>
/// Generate image collection efficiency plot
/// </summary>
/// <remarks>
/// Ratio of collected and expected packets per image; binning is configurable
/// </remarks>
/// <param name="plotRequest"> (optional)</param>
virtual void plot_image_collection_efficiency_post(const org::openapitools::server::model::Plot_request &plotRequest, Pistache::Http::ResponseWriter &response) = 0;
/// <summary>
/// Generate indexing rate per file
/// </summary>
/// <remarks>
/// Indexing rate per each of data files; useful for example for time resolved data
/// </remarks>
virtual void plot_indexing_rate_per_file_get(Pistache::Http::ResponseWriter &response) = 0;
/// <summary>
/// Generate indexing rate plot
/// </summary>
/// <remarks>
/// Image indexing rate; binning is configurable
/// </remarks>
/// <param name="plotRequest"> (optional)</param>
virtual void plot_indexing_rate_post(const org::openapitools::server::model::Plot_request &plotRequest, Pistache::Http::ResponseWriter &response) = 0;
/// <summary>
/// Generate radial integration profile
/// </summary>
/// <remarks>
/// Generate average radial integration profile
/// </remarks>
virtual void plot_rad_int_get(Pistache::Http::ResponseWriter &response) = 0;
/// <summary>
/// Generate radial integration profiles per file
/// </summary>
/// <remarks>
/// Radial integration plots for both the whole dataset and per file; useful for time-resolved measurements
/// </remarks>
virtual void plot_rad_int_per_file_get(Pistache::Http::ResponseWriter &response) = 0;
/// <summary>
/// Generate receiver delay plot
/// </summary>
/// <remarks>
/// Amount of frames the receiver is behind the FPGA for each image - used for internal debugging; binning is configurable
/// </remarks>
/// <param name="plotRequest"> (optional)</param>
virtual void plot_receiver_delay_post(const org::openapitools::server::model::Plot_request &plotRequest, Pistache::Http::ResponseWriter &response) = 0;
/// <summary>
/// Generate ROI sum plot
/// </summary>
/// <remarks>
/// Sum of ROI rectangle per image; binning is configurable
/// </remarks>
/// <param name="plotRequest"> (optional)</param>
virtual void plot_roi_sum_post(const org::openapitools::server::model::Plot_request &plotRequest, Pistache::Http::ResponseWriter &response) = 0;
/// <summary>
/// Generate saturated pixels plot
/// </summary>
/// <remarks>
/// Count of saturated pixels per image; binning is configurable
/// </remarks>
/// <param name="plotRequest"> (optional)</param>
virtual void plot_saturated_pixel_post(const org::openapitools::server::model::Plot_request &plotRequest, Pistache::Http::ResponseWriter &response) = 0;
/// <summary>
/// Generate spot count plot
/// </summary>
/// <remarks>
/// Number of spots per image; binning is configurable
/// </remarks>
/// <param name="plotRequest"> (optional)</param>
virtual void plot_spot_count_post(const org::openapitools::server::model::Plot_request &plotRequest, Pistache::Http::ResponseWriter &response) = 0;
/// <summary>
/// Generate strong pixels plot
/// </summary>
/// <remarks>
/// Count of strong pixels per image (from spot finding); binning is configurable
/// </remarks>
/// <param name="plotRequest"> (optional)</param>
virtual void plot_strong_pixel_post(const org::openapitools::server::model::Plot_request &plotRequest, Pistache::Http::ResponseWriter &response) = 0;
/// <summary>
/// Start detector
/// </summary>
/// <remarks>
/// Start data acquisition. Detector must be in &#x60;Idle&#x60; state. Doesn&#39;t run calibration procedure. This is async function - one needs to use &#x60;POST /wait_till_done&#x60; to ensure operation is done.
/// </remarks>
/// <param name="datasetSettings"> (optional)</param>
virtual void start_post(const org::openapitools::server::model::Dataset_settings &datasetSettings, Pistache::Http::ResponseWriter &response) = 0;
/// <summary>
/// Get calibration statistics
/// </summary>
/// <remarks>
/// Statistics are provided for each module/storage cell separately
/// </remarks>
virtual void statistics_calibration_get(Pistache::Http::ResponseWriter &response) = 0;
/// <summary>
/// Get data collection statistics
/// </summary>
/// <remarks>
/// Results of the last data collection
/// </remarks>
virtual void statistics_data_collection_get(Pistache::Http::ResponseWriter &response) = 0;
/// <summary>
/// Get Jungfraujoch status
/// </summary>
/// <remarks>
/// Status of the data acquisition
/// </remarks>
virtual void status_get(Pistache::Http::ResponseWriter &response) = 0;
/// <summary>
/// Send soft trigger to the detector
/// </summary>
/// <remarks>
/// Generate soft trigger
/// </remarks>
virtual void trigger_post(Pistache::Http::ResponseWriter &response) = 0;
/// <summary>
/// Wait for acquisition done
/// </summary>
/// <remarks>
/// Block execution of external script till initialization, data collection or pedestal is finished. Running this command does not affect (cancel) running data collection, it is only to ensure synchronous execution of other software. To not block web server for a long period of time, the procedure is provided with a timeout of 5 seconds.
/// </remarks>
virtual void wait_till_done_post(Pistache::Http::ResponseWriter &response) = 0;
};
} // namespace org::openapitools::server::api
#endif /* DefaultApi_H_ */