67 lines
1.4 KiB
C++
67 lines
1.4 KiB
C++
|
|
/*
|
|||
|
|
* IParamStorage.h
|
|||
|
|
*
|
|||
|
|
* Created on: 21 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>. 2018 <EFBFBD>.
|
|||
|
|
* Author: titov
|
|||
|
|
*/
|
|||
|
|
|
|||
|
|
#ifndef SOURCE_DRIVER_IPARAMSTORAGE_H_
|
|||
|
|
#define SOURCE_DRIVER_IPARAMSTORAGE_H_
|
|||
|
|
|
|||
|
|
#include <cstddef>
|
|||
|
|
#include <utility>
|
|||
|
|
#include <exception>
|
|||
|
|
|
|||
|
|
#include "../systemic/IParameterProvider.hh"
|
|||
|
|
|
|||
|
|
namespace driver {
|
|||
|
|
|
|||
|
|
struct IParamStorage : public systemic::IParameterProvider {
|
|||
|
|
|
|||
|
|
/*!\brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
|
*/
|
|||
|
|
virtual void flush() = 0;
|
|||
|
|
|
|||
|
|
/*!\brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
|
*/
|
|||
|
|
virtual void load() = 0;
|
|||
|
|
|
|||
|
|
/*!\brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD>.
|
|||
|
|
* \return <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
|
*/
|
|||
|
|
virtual bool isDataSync() const = 0;
|
|||
|
|
|
|||
|
|
/*!\brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
|
*/
|
|||
|
|
virtual void clear() = 0;
|
|||
|
|
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
#include "../systemic/SystemException.hh"
|
|||
|
|
|
|||
|
|
namespace {
|
|||
|
|
|
|||
|
|
struct LackOfMemory : public systemic::SystemException {
|
|||
|
|
|
|||
|
|
typedef systemic::IParameterProvider::Id Id;
|
|||
|
|
|
|||
|
|
std::size_t requested_memory;
|
|||
|
|
Id param_id;
|
|||
|
|
|
|||
|
|
LackOfMemory( std::size_t mem, Id id ) : requested_memory(mem), param_id(id) {}
|
|||
|
|
std::size_t id() const noexcept { return 403; }
|
|||
|
|
const char * what() const noexcept { return "lack of memory in storage"; }
|
|||
|
|
std::pair<const char *, std::size_t> binary() const noexcept {
|
|||
|
|
return { reinterpret_cast<const char *>( &requested_memory ), sizeof(std::size_t) + sizeof(Id) };
|
|||
|
|
}
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
#endif /* SOURCE_DRIVER_IPARAMSTORAGE_H_ */
|