#ifndef PKE_AT_PKE_AT_DATA_INTERFACE_HPP #define PKE_AT_PKE_AT_DATA_INTERFACE_HPP #include "pke-at-data-interface-types.hpp" enum pke_at_data_interface_result_code { pke_at_data_interface_result_code_none = 0, pke_at_data_interface_result_code_success = 1, pke_at_data_interface_result_code_error = 2, }; struct pke_at_data_interface_response { pke_at_data_interface_result_code result_code; }; template struct pke_at_data_interface_response_t { pke_at_data_interface_result_code result_code; T *value; }; #define FPADIR std::future #define FPADIRT(T) std::future> #define PPADIR std::promise #define PPADIRT(T) std::promise> struct pke_at_data_interface { pke_at_data_interface() = default; virtual ~pke_at_data_interface() = default; virtual void init() const = 0; virtual void teardown() const = 0; virtual FPADIRT(pk_arr_t) get_service_types() const = 0; virtual FPADIRT(pk_arr_t) get_plans_upcoming_from_service_type(di_service_type *service_type) const = 0; virtual FPADIRT(pk_arr_t) get_plan_items(di_plan *plan) const = 0; // virtual FPADIRT(pk_arr_t) get_song_arrangements() const = 0; }; #endif /* PKE_AT_PKE_AT_DATA_INTERFACE_HPP */