[mdns] use NextFireTime class (#10304)

This commit updates the mDNS module to use the recently introduced
general-purpose `NextFireTime` class, replacing the module-specific
`TimerContext` class.
This commit is contained in:
Abtin Keshavarzian
2024-05-30 11:19:03 -07:00
committed by GitHub
parent 2841ca02d7
commit 0b716730b0
2 changed files with 30 additions and 68 deletions
+15 -44
View File
@@ -305,10 +305,7 @@ void Core::HandleEntryTimer(void)
RemoveEmptyEntries();
if (context.GetNextTime() != context.GetNow().GetDistantFuture())
{
mEntryTimer.FireAtIfEarlier(context.GetNextTime());
}
mEntryTimer.FireAtIfEarlier(context.GetNextFireTime());
}
void Core::RemoveEmptyEntries(void)
@@ -823,6 +820,14 @@ void Core::FireTime::ScheduleFireTimeOn(TimerMilli &aTimer)
}
}
void Core::FireTime::UpdateNextFireTimeOn(NextFireTime &aNextFireTime) const
{
if (mHasFireTime)
{
aNextFireTime.UpdateIfEarlier(mFireTime);
}
}
//----------------------------------------------------------------------------------------------------------------------
// Core::Entry
@@ -1199,10 +1204,7 @@ template <typename EntryType> void Core::Entry::HandleTimer(EntryTimerContext &a
thisAsEntryType->DetermineNextFireTime();
exit:
if (HasFireTime())
{
aContext.UpdateNextTime(GetFireTime());
}
UpdateNextFireTimeOn(aContext.GetNextFireTime());
}
void Core::Entry::AppendQuestionTo(TxMessage &aTxMessage) const
@@ -2673,10 +2675,7 @@ void Core::ServiceType::HandleTimer(EntryTimerContext &aContext)
mServicesPtr.UpdateFireTimeOn(*this);
exit:
if (HasFireTime())
{
aContext.UpdateNextTime(GetFireTime());
}
UpdateNextFireTimeOn(aContext.GetNextFireTime());
}
void Core::ServiceType::PrepareResponse(TxMessage &aResponse, TimeMilli aNow)
@@ -3211,33 +3210,11 @@ bool Core::TxMessage::ShouldClearAppendStateOnReinit(const Entry &aEntry) const
return shouldClear;
}
//----------------------------------------------------------------------------------------------------------------------
// Core::TimerContext
Core::TimerContext::TimerContext(Instance &aInstance)
: InstanceLocator(aInstance)
, mNow(TimerMilli::GetNow())
, mNextTime(mNow.GetDistantFuture())
{
}
void Core::TimerContext::UpdateNextTime(TimeMilli aTime)
{
if (aTime <= mNow)
{
mNextTime = mNow;
}
else
{
mNextTime = Min(mNextTime, aTime);
}
}
//----------------------------------------------------------------------------------------------------------------------
// Core::EntryTimerContext
Core::EntryTimerContext::EntryTimerContext(Instance &aInstance)
: TimerContext(aInstance)
: InstanceLocator(aInstance)
, mProbeMessage(aInstance, TxMessage::kMulticastProbe)
, mResponseMessage(aInstance, TxMessage::kMulticastResponse)
{
@@ -4339,10 +4316,7 @@ void Core::HandleCacheTimer(void)
context.GetQueryMessage().Send();
if (context.GetNextTime() != context.GetNow().GetDistantFuture())
{
mCacheTimer.FireAtIfEarlier(context.GetNextTime());
}
mCacheTimer.FireAtIfEarlier(context.GetNextFireTime());
}
void Core::HandleCacheTask(void)
@@ -4448,7 +4422,7 @@ void Core::ResultCallback::Invoke(Instance &aInstance, const AddressResult &aRes
// Core::CacheTimerContext
Core::CacheTimerContext::CacheTimerContext(Instance &aInstance)
: TimerContext(aInstance)
: InstanceLocator(aInstance)
, mQueryMessage(aInstance, TxMessage::kMulticastQuery)
{
}
@@ -4811,10 +4785,7 @@ void Core::CacheEntry::HandleTimer(CacheTimerContext &aContext)
DetermineNextFireTime();
exit:
if (HasFireTime())
{
aContext.UpdateNextTime(GetFireTime());
}
UpdateNextFireTimeOn(aContext.GetNextFireTime());
}
Core::ResultCallback *Core::CacheEntry::FindCallbackMatching(const ResultCallback &aCallback)
+15 -24
View File
@@ -790,6 +790,7 @@ private:
protected:
void ScheduleFireTimeOn(TimerMilli &aTimer);
void UpdateNextFireTimeOn(NextFireTime &aNextFireTime) const;
private:
TimeMilli mFireTime;
@@ -1189,32 +1190,19 @@ private:
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
class TimerContext : public InstanceLocator
{
public:
TimerContext(Instance &aInstance);
TimeMilli GetNow(void) const { return mNow; }
TimeMilli GetNextTime(void) const { return mNextTime; }
void UpdateNextTime(TimeMilli aTime);
private:
TimeMilli mNow;
TimeMilli mNextTime;
};
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
class EntryTimerContext : public TimerContext // Used by `HandleEntryTimer`.
class EntryTimerContext : public InstanceLocator // Used by `HandleEntryTimer`.
{
public:
EntryTimerContext(Instance &aInstance);
TxMessage &GetProbeMessage(void) { return mProbeMessage; }
TxMessage &GetResponseMessage(void) { return mResponseMessage; }
TimeMilli GetNow(void) const { return mNextFireTime.GetNow(); }
NextFireTime &GetNextFireTime(void) { return mNextFireTime; }
TxMessage &GetProbeMessage(void) { return mProbeMessage; }
TxMessage &GetResponseMessage(void) { return mResponseMessage; }
private:
TxMessage mProbeMessage;
TxMessage mResponseMessage;
NextFireTime mNextFireTime;
TxMessage mProbeMessage;
TxMessage mResponseMessage;
};
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@@ -1440,14 +1428,17 @@ private:
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
class CacheTimerContext : public TimerContext
class CacheTimerContext : public InstanceLocator
{
public:
CacheTimerContext(Instance &aInstance);
TxMessage &GetQueryMessage(void) { return mQueryMessage; }
TimeMilli GetNow(void) const { return mNextFireTime.GetNow(); }
NextFireTime &GetNextFireTime(void) { return mNextFireTime; }
TxMessage &GetQueryMessage(void) { return mQueryMessage; }
private:
TxMessage mQueryMessage;
NextFireTime mNextFireTime;
TxMessage mQueryMessage;
};
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -