Skip to content

Commit ac78c5d

Browse files
committed
🚿 Make ElementarySupervision ctor default:
- The callback is now will be set via a dedicated function.
1 parent e67dbdc commit ac78c5d

File tree

3 files changed

+24
-14
lines changed

3 files changed

+24
-14
lines changed

src/ara/phm/supervisors/elementary_supervision.cpp

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,8 @@ namespace ara
77
{
88
namespace supervisors
99
{
10-
ElementarySupervision::ElementarySupervision(
11-
std::function<void(SupervisionStatus)> &&callback) : mOnStatusChanged{std::move(callback)},
12-
mStatus{SupervisionStatus::kDeactivated}
10+
ElementarySupervision::ElementarySupervision() noexcept : mStatus{SupervisionStatus::kDeactivated},
11+
mOnStatusChanged{nullptr}
1312
{
1413
}
1514

@@ -22,7 +21,10 @@ namespace ara
2221
case SupervisionStatus::kDeactivated:
2322
case SupervisionStatus::kExpired:
2423
mStatus = status;
25-
mOnStatusChanged(mStatus);
24+
if (mOnStatusChanged)
25+
{
26+
mOnStatusChanged(mStatus);
27+
}
2628
break;
2729

2830
case SupervisionStatus::kOk:
@@ -31,7 +33,10 @@ namespace ara
3133
if (mStatus != SupervisionStatus::kExpired)
3234
{
3335
mStatus = status;
34-
mOnStatusChanged(mStatus);
36+
if (mOnStatusChanged)
37+
{
38+
mOnStatusChanged(mStatus);
39+
}
3540
}
3641

3742
break;
@@ -46,6 +51,12 @@ namespace ara
4651
{
4752
return mStatus;
4853
}
54+
55+
void ElementarySupervision::SetCallback(
56+
std::function<void(SupervisionStatus)> &&callback)
57+
{
58+
mOnStatusChanged = std::move(callback);
59+
}
4960
}
5061
}
5162
}

src/ara/phm/supervisors/elementary_supervision.h

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,26 +23,27 @@ namespace ara
2323
class ElementarySupervision
2424
{
2525
private:
26-
const std::function<void(SupervisionStatus)> mOnStatusChanged;
2726
SupervisionStatus mStatus;
27+
std::function<void(SupervisionStatus)> mOnStatusChanged;
2828

2929
protected:
30-
/// @brief Constructor
31-
/// @param callback Callback to be invoked on the supervision status change
32-
ElementarySupervision(
33-
std::function<void(SupervisionStatus)> &&callback);
30+
ElementarySupervision() noexcept;
3431

3532
/// @brief Report the new supervision status
3633
/// @param status New status of the supervision method
3734
void Report(SupervisionStatus status);
3835

3936
public:
40-
ElementarySupervision() = delete;
4137
virtual ~ElementarySupervision() noexcept = default;
4238

4339
/// @brief Get the supervision status
4440
/// @returns Current elementary supervision status
4541
SupervisionStatus GetStatus() const noexcept;
42+
43+
/// @brief Set a callback to be invoked on the supervision status change
44+
/// @param callback On supervision status changed callback
45+
void SetCallback(
46+
std::function<void(SupervisionStatus)> &&callback);
4647
};
4748
}
4849
}

test/ara/phm/supervisors/dummy_supervision.h

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,7 @@ namespace ara
1313
class DummySupervision : public ElementarySupervision
1414
{
1515
public:
16-
DummySupervision() : ElementarySupervision([](SupervisionStatus status) {})
17-
{
18-
}
16+
DummySupervision() noexcept = default;
1917

2018
inline void ReportStatus(SupervisionStatus status)
2119
{

0 commit comments

Comments
 (0)