From f357b1bf6ea39d8118e90f8a371974d29bd054e3 Mon Sep 17 00:00:00 2001 From: Laurent Pinchart Date: Tue, 26 Jul 2022 02:36:38 +0300 Subject: ipa: raspberrypi: Return an error code from Algorithm::read() When encountering errors, the Algorithm::read() function either uses LOG(Fatal) or throws exceptions from the boost property_tree functions. To prepare for replacing boost JSON parse with the YamlParser class, give the Algorithm::read() function the ability to return an error code, and propagate it all the way to the IPA module init() function. All algorithm classes return a hardcoded 0 value for now, subsequent commits will change that. Signed-off-by: Laurent Pinchart Reviewed-by: Naushir Patuck Tested-by: Naushir Patuck --- src/ipa/raspberrypi/controller/controller.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'src/ipa/raspberrypi/controller/controller.cpp') diff --git a/src/ipa/raspberrypi/controller/controller.cpp b/src/ipa/raspberrypi/controller/controller.cpp index 872a3230..d91ac907 100644 --- a/src/ipa/raspberrypi/controller/controller.cpp +++ b/src/ipa/raspberrypi/controller/controller.cpp @@ -32,19 +32,23 @@ Controller::Controller(char const *jsonFilename) Controller::~Controller() {} -void Controller::read(char const *filename) +int Controller::read(char const *filename) { boost::property_tree::ptree root; boost::property_tree::read_json(filename, root); for (auto const &keyAndValue : root) { Algorithm *algo = createAlgorithm(keyAndValue.first.c_str()); if (algo) { - algo->read(keyAndValue.second); + int ret = algo->read(keyAndValue.second); + if (ret) + return ret; algorithms_.push_back(AlgorithmPtr(algo)); } else LOG(RPiController, Warning) << "No algorithm found for \"" << keyAndValue.first << "\""; } + + return 0; } Algorithm *Controller::createAlgorithm(char const *name) -- cgit v1.2.1