/* * IParameterProvider.h * * Created on: 19 нояб. 2018 г. * Author: titov */ #ifndef SOURCE_SYSTEMIC_IPARAMETERPROVIDER_H_ #define SOURCE_SYSTEMIC_IPARAMETERPROVIDER_H_ #include #include #include "SharedData.hh" namespace systemic { //!Интерфейс поставщика настраиваемых данных. struct IParameterProvider { //!Тип идентификатора. typedef unsigned int Id; //!Получить буфер настраиваемых данных. /*!Буфер настраиваемых данных содержит запрошенную настройку и доступен для чтения и модификации. * \param[in] parameter_id Идентификатор буфера. * \return Указатель на буфер в случае если запрошенная настройка есть, иначе nullptr и его размер. */ virtual SharedData getParameterBuff( Id parameter_id ) const = 0; /*! \brief Получение указателя на запись настройки * \param id Идентификатор настройки. * Если размер принимаемой структуры больше чем имеющейся, либо настройки с указаным идентификатором не существует, * то под принимаемую настройку выделяется память. * \return Указатель по которому ожидается прием настройки размером size, либо nullptr, если не удалось выделить память. */ virtual SharedData createParameterBuff( Id parameter_id, std::size_t size ) = 0; //!Сохранить значение параметра. /*!Сохранить данные буфера с устройстве. * \param[in] parameter_id Идентификатор буфера. * \return Статус выполнения запроса. */ virtual bool flushParameterBuff( Id parameter_id ) = 0; //Здесь могла бы быть функция проверкии соотвествия значения параметра значению сохраненному. virtual ~IParameterProvider() = default; }; } #endif /* SOURCE_SYSTEMIC_IPARAMETERPROVIDER_H_ */