mirror of
https://github.com/espressif/openthread.git
synced 2026-09-14 05:00:11 +00:00
[child/router-table] overload ++ operator to advance iterators (#2828)
This commit is contained in:
committed by
Jonathan Hui
parent
d99a2cea8f
commit
2d973955a9
@@ -380,6 +380,20 @@ public:
|
|||||||
*/
|
*/
|
||||||
void Advance(void);
|
void Advance(void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method overloads operator `++` (pre-increment) to advance the iterator to move to the next Child Info
|
||||||
|
* entry in the list (if any).
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
void operator++(void) { Advance(); }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method overloads operator `++` (post-increment) to advance the iterator to move to the next Child Info
|
||||||
|
* entry in the list (if any).
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
void operator++(int) { Advance(); }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method gets the Child Info corresponding to the current iterator entry in the list.
|
* This method gets the Child Info corresponding to the current iterator entry in the list.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -561,7 +561,7 @@ void AddressResolver::HandleAddressError(Coap::Header &aHeader, Message &aMessag
|
|||||||
memcpy(&macAddr, mlIidTlv.GetIid(), sizeof(macAddr));
|
memcpy(&macAddr, mlIidTlv.GetIid(), sizeof(macAddr));
|
||||||
macAddr.m8[0] ^= 0x2;
|
macAddr.m8[0] ^= 0x2;
|
||||||
|
|
||||||
for (ChildTable::Iterator iter(GetInstance(), ChildTable::kInStateValid); !iter.IsDone(); iter.Advance())
|
for (ChildTable::Iterator iter(GetInstance(), ChildTable::kInStateValid); !iter.IsDone(); iter++)
|
||||||
{
|
{
|
||||||
Child &child = *iter.GetChild();
|
Child &child = *iter.GetChild();
|
||||||
|
|
||||||
@@ -634,7 +634,7 @@ void AddressResolver::HandleAddressQuery(Coap::Header &aHeader, Message &aMessag
|
|||||||
ExitNow();
|
ExitNow();
|
||||||
}
|
}
|
||||||
|
|
||||||
for (ChildTable::Iterator iter(GetInstance(), ChildTable::kInStateValid); !iter.IsDone(); iter.Advance())
|
for (ChildTable::Iterator iter(GetInstance(), ChildTable::kInStateValid); !iter.IsDone(); iter++)
|
||||||
{
|
{
|
||||||
Child &child = *iter.GetChild();
|
Child &child = *iter.GetChild();
|
||||||
|
|
||||||
|
|||||||
@@ -124,6 +124,26 @@ public:
|
|||||||
*/
|
*/
|
||||||
void Advance(void);
|
void Advance(void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method overloads `++` operator (pre-increment) to advance the iterator.
|
||||||
|
*
|
||||||
|
* The iterator is moved to point to the next `Child` entry matching the given state filter in the constructor.
|
||||||
|
* If there are no more `Child` entries matching the given filter, the iterator becomes empty (i.e.,
|
||||||
|
* `GetChild()` returns `NULL` and `IsDone()` returns `true`).
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
void operator++(void) { Advance(); }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method overloads `++` operator (post-increment) to advance the iterator.
|
||||||
|
*
|
||||||
|
* The iterator is moved to point to the next `Child` entry matching the given state filter in the constructor.
|
||||||
|
* If there are no more `Child` entries matching the given filter, the iterator becomes empty (i.e.,
|
||||||
|
* `GetChild()` returns `NULL` and `IsDone()` returns `true`).
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
void operator++(int) { Advance(); }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method gets the `Child` entry to which the iterator is currently pointing.
|
* This method gets the `Child` entry to which the iterator is currently pointing.
|
||||||
*
|
*
|
||||||
@@ -307,6 +327,8 @@ public:
|
|||||||
void Reset(void) {}
|
void Reset(void) {}
|
||||||
bool IsDone(void) const { return true; }
|
bool IsDone(void) const { return true; }
|
||||||
void Advance(void) {}
|
void Advance(void) {}
|
||||||
|
void operator++(void) {}
|
||||||
|
void operator++(int) {}
|
||||||
Child *GetChild(void) { return NULL; }
|
Child *GetChild(void) { return NULL; }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -138,7 +138,7 @@ otError KeyManager::SetMasterKey(const otMasterKey &aKey)
|
|||||||
routers->SetMleFrameCounter(0);
|
routers->SetMleFrameCounter(0);
|
||||||
|
|
||||||
// reset router frame counters
|
// reset router frame counters
|
||||||
for (RouterTable::Iterator iter(GetInstance()); !iter.IsDone(); iter.Advance())
|
for (RouterTable::Iterator iter(GetInstance()); !iter.IsDone(); iter++)
|
||||||
{
|
{
|
||||||
iter.GetRouter()->SetKeySequence(0);
|
iter.GetRouter()->SetKeySequence(0);
|
||||||
iter.GetRouter()->SetLinkFrameCounter(0);
|
iter.GetRouter()->SetLinkFrameCounter(0);
|
||||||
@@ -146,7 +146,7 @@ otError KeyManager::SetMasterKey(const otMasterKey &aKey)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// reset child frame counters
|
// reset child frame counters
|
||||||
for (ChildTable::Iterator iter(GetInstance(), ChildTable::kInStateAnyExceptInvalid); !iter.IsDone(); iter.Advance())
|
for (ChildTable::Iterator iter(GetInstance(), ChildTable::kInStateAnyExceptInvalid); !iter.IsDone(); iter++)
|
||||||
{
|
{
|
||||||
iter.GetChild()->SetKeySequence(0);
|
iter.GetChild()->SetKeySequence(0);
|
||||||
iter.GetChild()->SetLinkFrameCounter(0);
|
iter.GetChild()->SetLinkFrameCounter(0);
|
||||||
|
|||||||
@@ -146,7 +146,7 @@ exit:
|
|||||||
|
|
||||||
void MeshForwarder::RemoveMessage(Message &aMessage)
|
void MeshForwarder::RemoveMessage(Message &aMessage)
|
||||||
{
|
{
|
||||||
for (ChildTable::Iterator iter(GetInstance(), ChildTable::kInStateAnyExceptInvalid); !iter.IsDone(); iter.Advance())
|
for (ChildTable::Iterator iter(GetInstance(), ChildTable::kInStateAnyExceptInvalid); !iter.IsDone(); iter++)
|
||||||
{
|
{
|
||||||
IgnoreReturnValue(RemoveMessageFromSleepyChild(aMessage, *iter.GetChild()));
|
IgnoreReturnValue(RemoveMessageFromSleepyChild(aMessage, *iter.GetChild()));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -79,7 +79,7 @@ otError MeshForwarder::SendMessage(Message &aMessage)
|
|||||||
{
|
{
|
||||||
// destined for all sleepy children
|
// destined for all sleepy children
|
||||||
for (ChildTable::Iterator iter(GetInstance(), ChildTable::kInStateValidOrRestoring); !iter.IsDone();
|
for (ChildTable::Iterator iter(GetInstance(), ChildTable::kInStateValidOrRestoring); !iter.IsDone();
|
||||||
iter.Advance())
|
iter++)
|
||||||
{
|
{
|
||||||
Child &child = *iter.GetChild();
|
Child &child = *iter.GetChild();
|
||||||
|
|
||||||
@@ -94,7 +94,7 @@ otError MeshForwarder::SendMessage(Message &aMessage)
|
|||||||
{
|
{
|
||||||
// destined for some sleepy children which subscribed the multicast address.
|
// destined for some sleepy children which subscribed the multicast address.
|
||||||
for (ChildTable::Iterator iter(GetInstance(), ChildTable::kInStateValidOrRestoring); !iter.IsDone();
|
for (ChildTable::Iterator iter(GetInstance(), ChildTable::kInStateValidOrRestoring); !iter.IsDone();
|
||||||
iter.Advance())
|
iter++)
|
||||||
{
|
{
|
||||||
Child &child = *iter.GetChild();
|
Child &child = *iter.GetChild();
|
||||||
|
|
||||||
@@ -222,8 +222,7 @@ exit:
|
|||||||
|
|
||||||
void MeshForwarder::UpdateIndirectMessages(void)
|
void MeshForwarder::UpdateIndirectMessages(void)
|
||||||
{
|
{
|
||||||
for (ChildTable::Iterator iter(GetInstance(), ChildTable::kInStateAnyExceptValidOrRestoing); !iter.IsDone();
|
for (ChildTable::Iterator iter(GetInstance(), ChildTable::kInStateAnyExceptValidOrRestoing); !iter.IsDone(); iter++)
|
||||||
iter.Advance())
|
|
||||||
{
|
{
|
||||||
if (iter.GetChild()->GetIndirectMessageCount() == 0)
|
if (iter.GetChild()->GetIndirectMessageCount() == 0)
|
||||||
{
|
{
|
||||||
@@ -351,8 +350,7 @@ void MeshForwarder::RemoveDataResponseMessages(void)
|
|||||||
|
|
||||||
if (!(ip6Header.GetDestination().IsMulticast()))
|
if (!(ip6Header.GetDestination().IsMulticast()))
|
||||||
{
|
{
|
||||||
for (ChildTable::Iterator iter(GetInstance(), ChildTable::kInStateAnyExceptInvalid); !iter.IsDone();
|
for (ChildTable::Iterator iter(GetInstance(), ChildTable::kInStateAnyExceptInvalid); !iter.IsDone(); iter++)
|
||||||
iter.Advance())
|
|
||||||
{
|
{
|
||||||
IgnoreReturnValue(RemoveMessageFromSleepyChild(*message, *iter.GetChild()));
|
IgnoreReturnValue(RemoveMessageFromSleepyChild(*message, *iter.GetChild()));
|
||||||
}
|
}
|
||||||
@@ -377,7 +375,7 @@ otError MeshForwarder::GetIndirectTransmission(void)
|
|||||||
UpdateIndirectMessages();
|
UpdateIndirectMessages();
|
||||||
|
|
||||||
for (ChildTable::Iterator iter(GetInstance(), ChildTable::kInStateValidOrRestoring, mIndirectStartingChild);
|
for (ChildTable::Iterator iter(GetInstance(), ChildTable::kInStateValidOrRestoring, mIndirectStartingChild);
|
||||||
!iter.IsDone(); iter.Advance())
|
!iter.IsDone(); iter++)
|
||||||
{
|
{
|
||||||
Child &child = *iter.GetChild();
|
Child &child = *iter.GetChild();
|
||||||
|
|
||||||
@@ -592,7 +590,7 @@ void MeshForwarder::HandleSentFrameToChild(const Mac::Frame &aFrame, otError aEr
|
|||||||
// through the children list from this child.
|
// through the children list from this child.
|
||||||
|
|
||||||
ChildTable::Iterator iter(GetInstance(), ChildTable::kInStateValidOrRestoring, mIndirectStartingChild);
|
ChildTable::Iterator iter(GetInstance(), ChildTable::kInStateValidOrRestoring, mIndirectStartingChild);
|
||||||
iter.Advance();
|
iter++;
|
||||||
mIndirectStartingChild = iter.GetChild();
|
mIndirectStartingChild = iter.GetChild();
|
||||||
|
|
||||||
switch (aError)
|
switch (aError)
|
||||||
|
|||||||
@@ -311,7 +311,7 @@ otError MleRouter::SetStateRouter(uint16_t aRloc16)
|
|||||||
mRouterTable.Clear();
|
mRouterTable.Clear();
|
||||||
|
|
||||||
// remove children that do not have matching RLOC16
|
// remove children that do not have matching RLOC16
|
||||||
for (ChildTable::Iterator iter(GetInstance(), ChildTable::kInStateValidOrRestoring); !iter.IsDone(); iter.Advance())
|
for (ChildTable::Iterator iter(GetInstance(), ChildTable::kInStateValidOrRestoring); !iter.IsDone(); iter++)
|
||||||
{
|
{
|
||||||
if (GetRouterId(iter.GetChild()->GetRloc16()) != mRouterId)
|
if (GetRouterId(iter.GetChild()->GetRloc16()) != mRouterId)
|
||||||
{
|
{
|
||||||
@@ -352,7 +352,7 @@ otError MleRouter::SetStateLeader(uint16_t aRloc16)
|
|||||||
netif.GetAddressResolver().Clear();
|
netif.GetAddressResolver().Clear();
|
||||||
|
|
||||||
// remove children that do not have matching RLOC16
|
// remove children that do not have matching RLOC16
|
||||||
for (ChildTable::Iterator iter(GetInstance(), ChildTable::kInStateValidOrRestoring); !iter.IsDone(); iter.Advance())
|
for (ChildTable::Iterator iter(GetInstance(), ChildTable::kInStateValidOrRestoring); !iter.IsDone(); iter++)
|
||||||
{
|
{
|
||||||
if (GetRouterId(iter.GetChild()->GetRloc16()) != mRouterId)
|
if (GetRouterId(iter.GetChild()->GetRloc16()) != mRouterId)
|
||||||
{
|
{
|
||||||
@@ -1482,7 +1482,7 @@ void MleRouter::UpdateRoutes(const RouteTlv &aRoute, uint8_t aRouterId)
|
|||||||
|
|
||||||
otLogInfoMle(GetInstance(), "Route table updated");
|
otLogInfoMle(GetInstance(), "Route table updated");
|
||||||
|
|
||||||
for (RouterTable::Iterator iter(GetInstance()); !iter.IsDone(); iter.Advance())
|
for (RouterTable::Iterator iter(GetInstance()); !iter.IsDone(); iter++)
|
||||||
{
|
{
|
||||||
Router &router = *iter.GetRouter();
|
Router &router = *iter.GetRouter();
|
||||||
|
|
||||||
@@ -1689,7 +1689,7 @@ void MleRouter::HandleStateUpdateTimer(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// update children state
|
// update children state
|
||||||
for (ChildTable::Iterator iter(GetInstance(), ChildTable::kInStateAnyExceptInvalid); !iter.IsDone(); iter.Advance())
|
for (ChildTable::Iterator iter(GetInstance(), ChildTable::kInStateAnyExceptInvalid); !iter.IsDone(); iter++)
|
||||||
{
|
{
|
||||||
Child & child = *iter.GetChild();
|
Child & child = *iter.GetChild();
|
||||||
uint32_t timeout = 0;
|
uint32_t timeout = 0;
|
||||||
@@ -1726,7 +1726,7 @@ void MleRouter::HandleStateUpdateTimer(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// update router state
|
// update router state
|
||||||
for (RouterTable::Iterator iter(GetInstance()); !iter.IsDone(); iter.Advance())
|
for (RouterTable::Iterator iter(GetInstance()); !iter.IsDone(); iter++)
|
||||||
{
|
{
|
||||||
Router & router = *iter.GetRouter();
|
Router & router = *iter.GetRouter();
|
||||||
uint32_t age;
|
uint32_t age;
|
||||||
@@ -1933,8 +1933,7 @@ otError MleRouter::UpdateChildAddresses(const Message &aMessage, uint16_t aOffse
|
|||||||
// table is timed out and then trying to register its globally unique
|
// table is timed out and then trying to register its globally unique
|
||||||
// IPv6 address as the new child.
|
// IPv6 address as the new child.
|
||||||
|
|
||||||
for (ChildTable::Iterator iter(GetInstance(), ChildTable::kInStateValidOrRestoring); !iter.IsDone();
|
for (ChildTable::Iterator iter(GetInstance(), ChildTable::kInStateValidOrRestoring); !iter.IsDone(); iter++)
|
||||||
iter.Advance())
|
|
||||||
{
|
{
|
||||||
if (iter.GetChild() == &aChild)
|
if (iter.GetChild() == &aChild)
|
||||||
{
|
{
|
||||||
@@ -2433,7 +2432,7 @@ void MleRouter::SynchronizeChildNetworkData(void)
|
|||||||
|
|
||||||
VerifyOrExit(mRole == OT_DEVICE_ROLE_ROUTER || mRole == OT_DEVICE_ROLE_LEADER);
|
VerifyOrExit(mRole == OT_DEVICE_ROLE_ROUTER || mRole == OT_DEVICE_ROLE_LEADER);
|
||||||
|
|
||||||
for (ChildTable::Iterator iter(GetInstance(), ChildTable::kInStateValid); !iter.IsDone(); iter.Advance())
|
for (ChildTable::Iterator iter(GetInstance(), ChildTable::kInStateValid); !iter.IsDone(); iter++)
|
||||||
{
|
{
|
||||||
Child & child = *iter.GetChild();
|
Child & child = *iter.GetChild();
|
||||||
uint8_t version;
|
uint8_t version;
|
||||||
@@ -3180,7 +3179,7 @@ Neighbor *MleRouter::GetNeighbor(const Ip6::Address &aAddress)
|
|||||||
context.mContextId = 0xff;
|
context.mContextId = 0xff;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (ChildTable::Iterator iter(GetInstance(), ChildTable::kInStateValidOrRestoring); !iter.IsDone(); iter.Advance())
|
for (ChildTable::Iterator iter(GetInstance(), ChildTable::kInStateValidOrRestoring); !iter.IsDone(); iter++)
|
||||||
{
|
{
|
||||||
child = iter.GetChild();
|
child = iter.GetChild();
|
||||||
|
|
||||||
@@ -3384,7 +3383,7 @@ void MleRouter::RestoreChildren(void)
|
|||||||
bool foundDuplicate = false;
|
bool foundDuplicate = false;
|
||||||
uint8_t numChildren = 0;
|
uint8_t numChildren = 0;
|
||||||
|
|
||||||
for (Settings::ChildInfoIterator iter(GetInstance()); !iter.IsDone(); iter.Advance())
|
for (Settings::ChildInfoIterator iter(GetInstance()); !iter.IsDone(); iter++)
|
||||||
{
|
{
|
||||||
Child * child;
|
Child * child;
|
||||||
const Settings::ChildInfo &childInfo = iter.GetChildInfo();
|
const Settings::ChildInfo &childInfo = iter.GetChildInfo();
|
||||||
@@ -3431,7 +3430,7 @@ otError MleRouter::RemoveStoredChild(uint16_t aChildRloc16)
|
|||||||
{
|
{
|
||||||
otError error = OT_ERROR_NOT_FOUND;
|
otError error = OT_ERROR_NOT_FOUND;
|
||||||
|
|
||||||
for (Settings::ChildInfoIterator iter(GetInstance()); !iter.IsDone(); iter.Advance())
|
for (Settings::ChildInfoIterator iter(GetInstance()); !iter.IsDone(); iter++)
|
||||||
{
|
{
|
||||||
if (iter.GetChildInfo().mRloc16 == aChildRloc16)
|
if (iter.GetChildInfo().mRloc16 == aChildRloc16)
|
||||||
{
|
{
|
||||||
@@ -3473,7 +3472,7 @@ otError MleRouter::RefreshStoredChildren(void)
|
|||||||
|
|
||||||
SuccessOrExit(error = GetInstance().GetSettings().DeleteChildInfo());
|
SuccessOrExit(error = GetInstance().GetSettings().DeleteChildInfo());
|
||||||
|
|
||||||
for (ChildTable::Iterator iter(GetInstance(), ChildTable::kInStateAnyExceptInvalid); !iter.IsDone(); iter.Advance())
|
for (ChildTable::Iterator iter(GetInstance(), ChildTable::kInStateAnyExceptInvalid); !iter.IsDone(); iter++)
|
||||||
{
|
{
|
||||||
SuccessOrExit(error = StoreChild(iter.GetChild()->GetRloc16()));
|
SuccessOrExit(error = StoreChild(iter.GetChild()->GetRloc16()));
|
||||||
}
|
}
|
||||||
@@ -3860,7 +3859,7 @@ void MleRouter::HandleAddressSolicitResponse(Coap::Header * aHeader,
|
|||||||
SendLinkRequest(NULL);
|
SendLinkRequest(NULL);
|
||||||
|
|
||||||
// send child id responses
|
// send child id responses
|
||||||
for (ChildTable::Iterator iter(GetInstance(), ChildTable::kInStateChildIdRequest); !iter.IsDone(); iter.Advance())
|
for (ChildTable::Iterator iter(GetInstance(), ChildTable::kInStateChildIdRequest); !iter.IsDone(); iter++)
|
||||||
{
|
{
|
||||||
SendChildIdResponse(*iter.GetChild());
|
SendChildIdResponse(*iter.GetChild());
|
||||||
}
|
}
|
||||||
@@ -4136,7 +4135,7 @@ void MleRouter::FillConnectivityTlv(ConnectivityTlv &aTlv)
|
|||||||
|
|
||||||
aTlv.SetActiveRouters(mRouterTable.GetActiveRouterCount());
|
aTlv.SetActiveRouters(mRouterTable.GetActiveRouterCount());
|
||||||
|
|
||||||
for (RouterTable::Iterator iter(GetInstance()); !iter.IsDone(); iter.Advance())
|
for (RouterTable::Iterator iter(GetInstance()); !iter.IsDone(); iter++)
|
||||||
{
|
{
|
||||||
Router &router = *iter.GetRouter();
|
Router &router = *iter.GetRouter();
|
||||||
uint8_t linkQuality;
|
uint8_t linkQuality;
|
||||||
@@ -4243,7 +4242,7 @@ void MleRouter::FillRouteTlv(RouteTlv &aTlv)
|
|||||||
aTlv.SetRouterIdSequence(mRouterTable.GetRouterIdSequence());
|
aTlv.SetRouterIdSequence(mRouterTable.GetRouterIdSequence());
|
||||||
aTlv.ClearRouterIdMask();
|
aTlv.ClearRouterIdMask();
|
||||||
|
|
||||||
for (RouterTable::Iterator iter(GetInstance()); !iter.IsDone(); iter.Advance(), routerCount++)
|
for (RouterTable::Iterator iter(GetInstance()); !iter.IsDone(); iter++, routerCount++)
|
||||||
{
|
{
|
||||||
Router &router = *iter.GetRouter();
|
Router &router = *iter.GetRouter();
|
||||||
|
|
||||||
@@ -4320,7 +4319,7 @@ bool MleRouter::HasMinDowngradeNeighborRouters(void)
|
|||||||
uint8_t linkQuality;
|
uint8_t linkQuality;
|
||||||
uint8_t routerCount = 0;
|
uint8_t routerCount = 0;
|
||||||
|
|
||||||
for (RouterTable::Iterator iter(GetInstance()); !iter.IsDone(); iter.Advance())
|
for (RouterTable::Iterator iter(GetInstance()); !iter.IsDone(); iter++)
|
||||||
{
|
{
|
||||||
Router &router = *iter.GetRouter();
|
Router &router = *iter.GetRouter();
|
||||||
|
|
||||||
@@ -4350,7 +4349,7 @@ bool MleRouter::HasOneNeighborWithComparableConnectivity(const RouteTlv &aRoute,
|
|||||||
bool rval = true;
|
bool rval = true;
|
||||||
|
|
||||||
// process local neighbor routers
|
// process local neighbor routers
|
||||||
for (RouterTable::Iterator iter(GetInstance()); !iter.IsDone(); iter.Advance())
|
for (RouterTable::Iterator iter(GetInstance()); !iter.IsDone(); iter++)
|
||||||
{
|
{
|
||||||
Router &router = *iter.GetRouter();
|
Router &router = *iter.GetRouter();
|
||||||
uint8_t localLinkQuality = 0;
|
uint8_t localLinkQuality = 0;
|
||||||
@@ -4435,7 +4434,7 @@ bool MleRouter::HasChildren(void)
|
|||||||
|
|
||||||
void MleRouter::RemoveChildren(void)
|
void MleRouter::RemoveChildren(void)
|
||||||
{
|
{
|
||||||
for (ChildTable::Iterator iter(GetInstance(), ChildTable::kInStateValidOrRestoring); !iter.IsDone(); iter.Advance())
|
for (ChildTable::Iterator iter(GetInstance(), ChildTable::kInStateValidOrRestoring); !iter.IsDone(); iter++)
|
||||||
{
|
{
|
||||||
RemoveNeighbor(*iter.GetChild());
|
RemoveNeighbor(*iter.GetChild());
|
||||||
}
|
}
|
||||||
@@ -4480,7 +4479,7 @@ otError MleRouter::GetMaxChildTimeout(uint32_t &aTimeout) const
|
|||||||
|
|
||||||
VerifyOrExit(mRole == OT_DEVICE_ROLE_ROUTER || mRole == OT_DEVICE_ROLE_LEADER, error = OT_ERROR_INVALID_STATE);
|
VerifyOrExit(mRole == OT_DEVICE_ROLE_ROUTER || mRole == OT_DEVICE_ROLE_LEADER, error = OT_ERROR_INVALID_STATE);
|
||||||
|
|
||||||
for (ChildTable::Iterator iter(GetInstance(), ChildTable::kInStateValid); !iter.IsDone(); iter.Advance())
|
for (ChildTable::Iterator iter(GetInstance(), ChildTable::kInStateValid); !iter.IsDone(); iter++)
|
||||||
{
|
{
|
||||||
Child &child = *iter.GetChild();
|
Child &child = *iter.GetChild();
|
||||||
|
|
||||||
@@ -4530,7 +4529,7 @@ bool MleRouter::HasSleepyChildrenSubscribed(const Ip6::Address &aAddress)
|
|||||||
{
|
{
|
||||||
bool rval = false;
|
bool rval = false;
|
||||||
|
|
||||||
for (ChildTable::Iterator iter(GetInstance(), ChildTable::kInStateValidOrRestoring); !iter.IsDone(); iter.Advance())
|
for (ChildTable::Iterator iter(GetInstance(), ChildTable::kInStateValidOrRestoring); !iter.IsDone(); iter++)
|
||||||
{
|
{
|
||||||
Child &child = *iter.GetChild();
|
Child &child = *iter.GetChild();
|
||||||
|
|
||||||
|
|||||||
@@ -245,7 +245,7 @@ otError NetworkDiagnostic::AppendChildTable(Message &aMessage)
|
|||||||
|
|
||||||
SuccessOrExit(error = aMessage.Append(&tlv, sizeof(ChildTableTlv)));
|
SuccessOrExit(error = aMessage.Append(&tlv, sizeof(ChildTableTlv)));
|
||||||
|
|
||||||
for (ChildTable::Iterator iter(GetInstance(), ChildTable::kInStateValid); !iter.IsDone(); iter.Advance())
|
for (ChildTable::Iterator iter(GetInstance(), ChildTable::kInStateValid); !iter.IsDone(); iter++)
|
||||||
{
|
{
|
||||||
Child &child = *iter.GetChild();
|
Child &child = *iter.GetChild();
|
||||||
|
|
||||||
|
|||||||
@@ -82,6 +82,24 @@ public:
|
|||||||
*/
|
*/
|
||||||
void Advance(void);
|
void Advance(void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method overloads `++` operator (pre-increment) to advance the iterator.
|
||||||
|
*
|
||||||
|
* The iterator is moved to point to the next entry. If there are no more entries matching the iterator
|
||||||
|
* becomes empty (i.e., `GetRouter()` returns `NULL` and `IsDone()` returns `true`).
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
void operator++(void) { Advance(); }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method overloads `++` operator (post-increment) to advance the iterator.
|
||||||
|
*
|
||||||
|
* The iterator is moved to point to the next entry. If there are no more entries matching the iterator
|
||||||
|
* becomes empty (i.e., `GetRouter()` returns `NULL` and `IsDone()` returns `true`).
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
void operator++(int) { Advance(); }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method gets the entry to which the iterator is currently pointing.
|
* This method gets the entry to which the iterator is currently pointing.
|
||||||
*
|
*
|
||||||
@@ -327,6 +345,8 @@ public:
|
|||||||
void Reset(void) {}
|
void Reset(void) {}
|
||||||
bool IsDone(void) const { return true; }
|
bool IsDone(void) const { return true; }
|
||||||
void Advance(void) {}
|
void Advance(void) {}
|
||||||
|
void operator++(void) {}
|
||||||
|
void operator++(int) {}
|
||||||
Router *GetRouter(void) { return NULL; }
|
Router *GetRouter(void) { return NULL; }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -219,7 +219,7 @@ otError SourceMatchController::AddPendingEntries(void)
|
|||||||
{
|
{
|
||||||
otError error = OT_ERROR_NONE;
|
otError error = OT_ERROR_NONE;
|
||||||
|
|
||||||
for (ChildTable::Iterator iter(GetInstance(), ChildTable::kInStateValidOrRestoring); !iter.IsDone(); iter.Advance())
|
for (ChildTable::Iterator iter(GetInstance(), ChildTable::kInStateValidOrRestoring); !iter.IsDone(); iter++)
|
||||||
{
|
{
|
||||||
if (iter.GetChild()->IsIndirectSourceMatchPending())
|
if (iter.GetChild()->IsIndirectSourceMatchPending())
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -124,7 +124,7 @@ void ChildSupervisor::HandleTimer(void)
|
|||||||
{
|
{
|
||||||
VerifyOrExit(mSupervisionInterval != 0);
|
VerifyOrExit(mSupervisionInterval != 0);
|
||||||
|
|
||||||
for (ChildTable::Iterator iter(GetInstance(), ChildTable::kInStateValid); !iter.IsDone(); iter.Advance())
|
for (ChildTable::Iterator iter(GetInstance(), ChildTable::kInStateValid); !iter.IsDone(); iter++)
|
||||||
{
|
{
|
||||||
Child &child = *iter.GetChild();
|
Child &child = *iter.GetChild();
|
||||||
|
|
||||||
|
|||||||
@@ -175,14 +175,14 @@ void VerifyChildTableContent(ChildTable &aTable, uint8_t aChildListLength, const
|
|||||||
VerifyOrQuit(iter.GetChild() == startingChild,
|
VerifyOrQuit(iter.GetChild() == startingChild,
|
||||||
"Iterator failed to start from the given child entry");
|
"Iterator failed to start from the given child entry");
|
||||||
|
|
||||||
iter.Advance();
|
iter++;
|
||||||
iter.Reset();
|
iter.Reset();
|
||||||
VerifyOrQuit(iter.GetChild() == startingChild, "iterator Reset() failed");
|
VerifyOrQuit(iter.GetChild() == startingChild, "iterator Reset() failed");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Use the iterator and verify that each returned `Child` entry is in the expected list.
|
// Use the iterator and verify that each returned `Child` entry is in the expected list.
|
||||||
|
|
||||||
for (; !iter.IsDone(); iter.Advance())
|
for (; !iter.IsDone(); iter++)
|
||||||
{
|
{
|
||||||
Child * child = iter.GetChild();
|
Child * child = iter.GetChild();
|
||||||
bool didFind = false;
|
bool didFind = false;
|
||||||
@@ -212,7 +212,7 @@ void VerifyChildTableContent(ChildTable &aTable, uint8_t aChildListLength, const
|
|||||||
|
|
||||||
VerifyOrQuit(iter.GetChild() == NULL, "iterator GetChild() failed");
|
VerifyOrQuit(iter.GetChild() == NULL, "iterator GetChild() failed");
|
||||||
|
|
||||||
iter.Advance();
|
iter++;
|
||||||
VerifyOrQuit(iter.IsDone(), "iterator Advance() (after iterator is done) failed");
|
VerifyOrQuit(iter.IsDone(), "iterator Advance() (after iterator is done) failed");
|
||||||
VerifyOrQuit(iter.GetChild() == NULL, "iterator GetChild() failed");
|
VerifyOrQuit(iter.GetChild() == NULL, "iterator GetChild() failed");
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user