File tree Expand file tree Collapse file tree 3 files changed +24
-14
lines changed Expand file tree Collapse file tree 3 files changed +24
-14
lines changed Original file line number Diff line number Diff 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}
Original file line number Diff line number Diff 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 }
Original file line number Diff line number Diff 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 {
You can’t perform that action at this time.
0 commit comments