3#include "AIPExceptions.h"
4#include "declarative/PropertyMacros.h"
41 throw AIPException(AIP_FATAL,
"pathToWatch cannot be empty");
43 auto totalSpace = boost::filesystem::space(
pathToWatch);
46 LOG_ERROR <<
"Please enter correct properties!";
47 std::string errorMsg =
"Incorrect properties set for Archive Manager. TotalDiskCapacity <" + std::to_string(totalSpace.capacity) +
">lowerWaterMark<" + std::to_string(
lowerWaterMark) +
"> UpperWaterMark<" + std::to_string(
upperWaterMark) +
">";
48 throw AIPException(AIP_FATAL, errorMsg);
65 template<
typename PropsT>
68 const std::map<std::string, apra::ScalarPropertyValue>& values,
69 std::vector<std::string>& missingRequired
71 apra::applyProp(props.pathToWatch,
"pathToWatch", values,
true, missingRequired);
73 auto itLower = values.find(
"lowerWaterMark");
74 if (itLower != values.end()) {
75 if (
auto* val = std::get_if<int64_t>(&itLower->second)) {
76 props.lowerWaterMark =
static_cast<uint64_t
>(*val);
79 missingRequired.push_back(
"lowerWaterMark");
81 auto itUpper = values.find(
"upperWaterMark");
82 if (itUpper != values.end()) {
83 if (
auto* val = std::get_if<int64_t>(&itUpper->second)) {
84 props.upperWaterMark =
static_cast<uint64_t
>(*val);
87 missingRequired.push_back(
"upperWaterMark");
89 apra::applyProp(props.samplingFreq,
"samplingFreq", values,
false, missingRequired);
94 if (propName ==
"lowerWaterMark")
return static_cast<int64_t
>(
lowerWaterMark);
95 if (propName ==
"upperWaterMark")
return static_cast<int64_t
>(
upperWaterMark);
96 if (propName ==
"samplingFreq")
return static_cast<int64_t
>(
samplingFreq);
97 throw std::runtime_error(
"Unknown property: " + propName);
112 template <
class Archive>
115 ar& boost::serialization::base_object<ModuleProps>(*
this);
141 void addInputPin(framemetadata_sp& metadata,
string& pinId);
Definition ArchiveSpaceManager.h:7
bool setProperty(const std::string &propName, const apra::ScalarPropertyValue &value)
Definition ArchiveSpaceManager.h:100
static void applyProperties(PropsT &props, const std::map< std::string, apra::ScalarPropertyValue > &values, std::vector< std::string > &missingRequired)
Definition ArchiveSpaceManager.h:66
apra::ScalarPropertyValue getProperty(const std::string &propName) const
Definition ArchiveSpaceManager.h:92
ArchiveSpaceManagerProps(uint64_t maxSizeAllowed, string _pathToWatch, int _samplingFreq)
Definition ArchiveSpaceManager.h:26
std::string pathToWatch
Definition ArchiveSpaceManager.h:55
size_t getSerializeSize()
Definition ArchiveSpaceManager.h:57
int samplingFreq
Definition ArchiveSpaceManager.h:56
void serialize(Archive &ar, const unsigned int version)
Definition ArchiveSpaceManager.h:113
ArchiveSpaceManagerProps(uint64_t _lowerWaterMark, uint64_t _upperWaterMark, string _pathToWatch, int _samplingFreq)
Definition ArchiveSpaceManager.h:15
ArchiveSpaceManagerProps()
Definition ArchiveSpaceManager.h:10
uint64_t lowerWaterMark
Definition ArchiveSpaceManager.h:53
uint64_t upperWaterMark
Definition ArchiveSpaceManager.h:54
friend class boost::serialization::access
Definition ArchiveSpaceManager.h:110
static std::vector< std::string > dynamicPropertyNames()
Definition ArchiveSpaceManager.h:105
void validateProps() const
Definition ArchiveSpaceManager.h:38
Definition ArchiveSpaceManager.cpp:8
Definition ArchiveSpaceManager.h:124
bool validateInputOutputPins()
Definition ArchiveSpaceManager.cpp:148
bool produce()
Definition ArchiveSpaceManager.cpp:193
void setProps(ArchiveSpaceManagerProps &props)
Definition ArchiveSpaceManager.cpp:180
bool checkDirectory
Definition ArchiveSpaceManager.h:147
bool validateInputPins()
Definition ArchiveSpaceManager.cpp:138
boost::shared_ptr< Detail > mDetail
Definition ArchiveSpaceManager.h:146
bool handlePropsChange(frame_sp &frame)
Definition ArchiveSpaceManager.cpp:185
bool term()
Definition ArchiveSpaceManager.cpp:170
virtual ~ArchiveSpaceManager()
Definition ArchiveSpaceManager.h:128
bool init()
Definition ArchiveSpaceManager.cpp:159
void addInputPin(framemetadata_sp &metadata, string &pinId)
Definition ArchiveSpaceManager.cpp:153
bool validateOutputPins()
Definition ArchiveSpaceManager.cpp:143
ArchiveSpaceManager(ArchiveSpaceManagerProps _props)
Definition ArchiveSpaceManager.cpp:132
uint64_t finalArchiveSpace
Definition ArchiveSpaceManager.h:132
ArchiveSpaceManagerProps getProps()
Definition ArchiveSpaceManager.cpp:175
float fps
Definition Module.h:110
virtual size_t getSerializeSize()
Definition Module.h:101
void applyProp(T &member, const char *propName, const std::map< std::string, ScalarPropertyValue > &values, bool isRequired, std::vector< std::string > &missingRequired)
Definition PropertyMacros.h:36
std::variant< int64_t, double, bool, std::string > ScalarPropertyValue
Definition ModuleRegistry.h:30