56 lines
1.7 KiB
C++
56 lines
1.7 KiB
C++
/*
|
||
* IParameterProvider.h
|
||
*
|
||
* Created on: 19 нояб. 2018 г.
|
||
* Author: titov
|
||
*/
|
||
|
||
#ifndef SOURCE_SYSTEMIC_IPARAMETERPROVIDER_H_
|
||
#define SOURCE_SYSTEMIC_IPARAMETERPROVIDER_H_
|
||
|
||
#include <cstddef>
|
||
#include <utility>
|
||
|
||
#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_ */
|