[multi-ail-detector] use direct callback from RxRaTracker (#12077)

This commit introduces a direct callback mechanism from `RxRaTracker`
to `MultiAilDetector` to signal changes in decision factors. This is
in preparation of future changes allowing `MultiAilDetector` to run
independently of `RoutingManager`.

Previously, `RxRaTracker` would signal `RoutingManager`, which in turn
would call `MultiAilDetector::Evaluate()`. This commit refactors this
interaction by adding a new `HandleRxRaTrackerDecisionFactorChanged()`
method to `MultiAilDetector`.
This commit is contained in:
Abtin Keshavarzian
2025-10-28 14:54:59 -07:00
committed by GitHub
parent 3e9aeae1b6
commit 13e7c4e702
3 changed files with 13 additions and 4 deletions
@@ -52,6 +52,7 @@ namespace ot {
namespace BorderRouter {
class NetDataBrTracker;
class RxRaTracker;
class RoutingManager;
/**
@@ -69,6 +70,7 @@ class RoutingManager;
class MultiAilDetector : public InstanceLocator
{
friend class NetDataBrTracker;
friend class RxRaTracker;
friend class RoutingManager;
public:
@@ -107,6 +109,9 @@ private:
void Evaluate(void);
void HandleTimer(void);
// Callback from `RxRaTracker`
void HandleRxRaTrackerDecisionFactorChanged(void) { Evaluate(); }
using DetectCallback = Callback<MultiAilCallback>;
using DetectTimer = TimerMilliIn<MultiAilDetector, &MultiAilDetector::HandleTimer>;
@@ -602,9 +602,6 @@ void RoutingManager::HandleRxRaTrackerDecisionFactorChanged(void)
mOnLinkPrefixManager.HandleRxRaTrackerChanged();
mRoutePublisher.Evaluate();
#if OPENTHREAD_CONFIG_BORDER_ROUTING_MULTI_AIL_DETECTION_ENABLE
Get<MultiAilDetector>().Evaluate();
#endif
exit:
return;
+8 -1
View File
@@ -892,7 +892,14 @@ exit:
void RxRaTracker::HandleExpirationTimer(void) { Evaluate(); }
void RxRaTracker::HandleSignalTask(void) { Get<RoutingManager>().HandleRxRaTrackerDecisionFactorChanged(); }
void RxRaTracker::HandleSignalTask(void)
{
#if OPENTHREAD_CONFIG_BORDER_ROUTING_MULTI_AIL_DETECTION_ENABLE
Get<MultiAilDetector>().HandleRxRaTrackerDecisionFactorChanged();
#endif
Get<RoutingManager>().HandleRxRaTrackerDecisionFactorChanged();
}
void RxRaTracker::HandleRdnssAddrTask(void) { mRdnssCallback.InvokeIfSet(); }