22
22
#include < lib/core/CHIPEncoding.h>
23
23
#include < lib/support/logging/CHIPLogging.h>
24
24
25
+ #include < bitset>
26
+
25
27
namespace chip {
26
28
namespace Controller {
27
29
28
- bool AddressListsSameExceptOrder (const size_t sourceNumIPs, const size_t destinationNumIPs,
29
- const Inet::IPAddress source[Dnssd::CommissionNodeData::kMaxIPAddresses ],
30
- const Inet::IPAddress destination[Dnssd::CommissionNodeData::kMaxIPAddresses ])
30
+ static bool SameExceptOrder (const chip::Span<const Inet::IPAddress> &source, const chip::Span<const Inet::IPAddress> &destination)
31
31
{
32
- size_t sameIpAddress = 0 ;
33
- bool addressUsed[chip::Dnssd::CommonResolutionData::kMaxIPAddresses ] = { false };
34
- if (sourceNumIPs != destinationNumIPs)
32
+ std::bitset<chip::Dnssd::CommonResolutionData::kMaxIPAddresses > addressUsed;
33
+ if (source.size () != destination.size ())
35
34
{
36
35
return false ;
37
36
}
38
37
39
- for (size_t s = 0 ; s < sourceNumIPs ; s++)
38
+ for (size_t s = 0 ; s < source. size () ; s++)
40
39
{
41
- for (size_t d = 0 ; d < destinationNumIPs ; d++)
40
+ for (size_t d = 0 ; d < destination. size () ; d++)
42
41
{
43
42
if (!addressUsed[d] && source[s] == destination[d])
44
43
{
45
44
// Change the user flag so that the compared target is no longer used
46
- addressUsed[d] = true ;
47
- sameIpAddress++;
45
+ addressUsed.set (d, true );
48
46
break ;
49
47
}
50
48
}
51
49
}
52
- return sameIpAddress == destinationNumIPs ;
50
+ return addressUsed. count () == destination. size () ;
53
51
}
54
52
55
53
void AbstractDnssdDiscoveryController::OnNodeDiscovered (const chip::Dnssd::DiscoveredNodeData & discNodeData)
@@ -65,8 +63,10 @@ void AbstractDnssdDiscoveryController::OnNodeDiscovered(const chip::Dnssd::Disco
65
63
{
66
64
continue ;
67
65
}
66
+ chip::Span<const Inet::IPAddress> discoveredNodeIPAddressSpan (&discoveredNode.ipAddress [0 ], discoveredNode.numIPs );
67
+ chip::Span<const Inet::IPAddress> nodeDataIPAddressSpan (&nodeData.ipAddress [0 ], nodeData.numIPs );
68
68
if (strcmp (discoveredNode.hostName , nodeData.hostName ) == 0 && discoveredNode.port == nodeData.port &&
69
- AddressListsSameExceptOrder (discoveredNode. numIPs , nodeData. numIPs , discoveredNode. ipAddress , nodeData. ipAddress ))
69
+ SameExceptOrder (discoveredNodeIPAddressSpan, nodeDataIPAddressSpan ))
70
70
{
71
71
discoveredNode = nodeData;
72
72
if (mDeviceDiscoveryDelegate != nullptr )
0 commit comments