mirror of
https://github.com/espressif/openthread.git
synced 2026-08-18 00:19:52 +00:00
[border-router] make RxRaTracker handle netdata events directly (#12016)
This change makes the `RxRaTracker` a direct listener of network data change events from the `Notifier`. Previously, the `RoutingManager` would receive the network data change event and then call `RxRaTracker::HandleNetDataChange()`. This created an unnecessary dependency between the two components. By making `RxRaTracker` a direct listener, we decouple it from `RoutingManager`. The `HandleNetDataChange()` method in `RxRaTracker` is also made private as it is now only called from within the class.
This commit is contained in:
@@ -446,7 +446,6 @@ void RoutingManager::HandleNotifierEvents(Events aEvents)
|
||||
|
||||
if (mIsRunning && aEvents.Contains(kEventThreadNetdataChanged))
|
||||
{
|
||||
Get<RxRaTracker>().HandleNetDataChange();
|
||||
mOnLinkPrefixManager.HandleNetDataChange();
|
||||
ScheduleRoutingPolicyEvaluation(kAfterRandomDelay);
|
||||
}
|
||||
|
||||
@@ -502,6 +502,14 @@ exit:
|
||||
return;
|
||||
}
|
||||
|
||||
void RxRaTracker::HandleNotifierEvents(Events aEvents)
|
||||
{
|
||||
if (aEvents.Contains(kEventThreadNetdataChanged))
|
||||
{
|
||||
HandleNetDataChange();
|
||||
}
|
||||
}
|
||||
|
||||
void RxRaTracker::HandleNetDataChange(void)
|
||||
{
|
||||
NetworkData::Iterator iterator = NetworkData::kIteratorInit;
|
||||
|
||||
@@ -73,6 +73,7 @@ class NetDataBrTracker;
|
||||
class RxRaTracker : public InstanceLocator
|
||||
{
|
||||
friend class NetDataBrTracker;
|
||||
friend class ot::Notifier;
|
||||
|
||||
public:
|
||||
/**
|
||||
@@ -279,7 +280,6 @@ public:
|
||||
// Callbacks notifying of changes
|
||||
void RemoveOrDeprecateOldEntries(TimeMilli aTimeThreshold);
|
||||
void HandleLocalOnLinkPrefixChanged(void);
|
||||
void HandleNetDataChange(void);
|
||||
|
||||
private:
|
||||
static constexpr uint32_t kStaleTime = 600; // 10 minutes.
|
||||
@@ -497,6 +497,9 @@ private:
|
||||
#if OPENTHREAD_CONFIG_HISTORY_TRACKER_ENABLE
|
||||
void ReportChangesToHistoryTracker(Router &aRouter, bool aRemoved);
|
||||
#endif
|
||||
void HandleNotifierEvents(Events aEvents);
|
||||
void HandleNetDataChange(void);
|
||||
|
||||
// Tasklet or timer callbacks
|
||||
void HandleSignalTask(void);
|
||||
void HandleRdnssAddrTask(void);
|
||||
|
||||
@@ -161,6 +161,7 @@ void Notifier::EmitEvents(void)
|
||||
Get<Extension::ExtensionBase>().HandleNotifierEvents(events);
|
||||
#endif
|
||||
#if OPENTHREAD_CONFIG_BORDER_ROUTING_ENABLE
|
||||
Get<BorderRouter::RxRaTracker>().HandleNotifierEvents(events);
|
||||
Get<BorderRouter::RoutingManager>().HandleNotifierEvents(events);
|
||||
#if OPENTHREAD_CONFIG_BORDER_ROUTING_TRACK_PEER_BR_INFO_ENABLE
|
||||
Get<BorderRouter::NetDataBrTracker>().HandleNotifierEvents(events);
|
||||
|
||||
Reference in New Issue
Block a user