From 03fc1178cd2f86afa0a4e77b452ee86875bd4617 Mon Sep 17 00:00:00 2001 From: Nivedita Sarkar Date: Thu, 18 Apr 2024 16:02:04 -0700 Subject: [PATCH 01/13] Add utility to get user default values for configurable parameters for darwin - Add support for getting a user default value for the SRP resolve timeout for DNS-SD. If user default value exists, ovveride the timeout. - Update the SRP resolve timeout to 3 secs The default can be set by using `defaults write org.csa-iot.matter.darwindefaults SRPTimeoutOverride ` --- src/platform/Darwin/BUILD.gn | 2 ++ src/platform/Darwin/DnssdImpl.cpp | 14 +++++++-- src/platform/Darwin/DnssdImpl.h | 4 +-- src/platform/Darwin/UserDefaultUtils.h | 27 ++++++++++++++++ src/platform/Darwin/UserDefaultUtils.mm | 41 +++++++++++++++++++++++++ 5 files changed, 84 insertions(+), 4 deletions(-) create mode 100644 src/platform/Darwin/UserDefaultUtils.h create mode 100644 src/platform/Darwin/UserDefaultUtils.mm diff --git a/src/platform/Darwin/BUILD.gn b/src/platform/Darwin/BUILD.gn index 8728178735404d..b84589d5ab05de 100644 --- a/src/platform/Darwin/BUILD.gn +++ b/src/platform/Darwin/BUILD.gn @@ -76,6 +76,8 @@ static_library("Darwin") { "PosixConfig.h", "SystemPlatformConfig.h", "SystemTimeSupport.cpp", + "UserDefaultUtils.mm", + "UserDefaultUtils.h" ] if (chip_enable_wifi) { diff --git a/src/platform/Darwin/DnssdImpl.cpp b/src/platform/Darwin/DnssdImpl.cpp index 4156c7a4bf0924..527c02c9286f5f 100644 --- a/src/platform/Darwin/DnssdImpl.cpp +++ b/src/platform/Darwin/DnssdImpl.cpp @@ -17,6 +17,7 @@ #include "DnssdImpl.h" #include "DnssdType.h" #include "MdnsError.h" +#include "UserDefaultUtils.h" #include @@ -29,6 +30,7 @@ using namespace chip::Dnssd; using namespace chip::Dnssd::Internal; +using namespace chip::DeviceLayer::Utils; namespace { @@ -37,7 +39,7 @@ constexpr char kLocalDot[] = "local."; constexpr char kSRPDot[] = "default.service.arpa."; // The extra time in milliseconds that we will wait for the resolution on the SRP domain to complete. -constexpr uint16_t kSRPTimeoutInMsec = 250; +constexpr uint16_t kSRPTimeoutInMsec = 3000; constexpr DNSServiceFlags kRegisterFlags = kDNSServiceFlagsNoAutoRename; constexpr DNSServiceFlags kBrowseFlags = kDNSServiceFlagsShareConnection; @@ -76,8 +78,16 @@ void LogOnFailure(const char * name, DNSServiceErrorType err) */ CHIP_ERROR StartSRPTimer(uint16_t timeoutInMSecs, ResolveContext * ctx) { + // Check to see if an user default value exists for the SRP timeout. If it does, override the timeoutInMSecs with user default value. + // To override the timeout value, use ` defaults write org.csa-iot.matter.darwindefaults SRPTimeoutOverride ` + // See UserDefaultUtils.mm for details + uint16_t userDefaultSRPTimeout = getUserDefaultDnssdSRPTimeout(); + if (userDefaultSRPTimeout) + { + timeoutInMSecs = userDefaultSRPTimeout; + } VerifyOrReturnValue(ctx != nullptr, CHIP_ERROR_INCORRECT_STATE); - ChipLogProgress(Discovery, "Starting timer to wait for possible SRP resolve results for %s", ctx->instanceName.c_str()); + ChipLogProgress(Discovery, "Starting timer to wait for %d milliseconds for possible SRP resolve results for %s", timeoutInMSecs, ctx->instanceName.c_str()); return chip::DeviceLayer::SystemLayer().StartTimer(chip::System::Clock::Milliseconds16(timeoutInMSecs), ResolveContext::SRPTimerExpiredCallback, static_cast(ctx)); } diff --git a/src/platform/Darwin/DnssdImpl.h b/src/platform/Darwin/DnssdImpl.h index 42ae55fdd9d4c0..3bf78fac6cb2bd 100644 --- a/src/platform/Darwin/DnssdImpl.h +++ b/src/platform/Darwin/DnssdImpl.h @@ -262,8 +262,8 @@ struct ResolveContext : public GenericContext std::shared_ptr consumerCounter; BrowseContext * const browseThatCausedResolve; // Can be null - // Indicates whether the timer for 250 msecs should be started - // to give the resolve on SRP domain some extra time to complete. + // Indicates whether the timer should be started to give the resolve + // on SRP domain some extra time to complete. bool shouldStartSRPTimerForResolve = false; bool isSRPTimerRunning = false; diff --git a/src/platform/Darwin/UserDefaultUtils.h b/src/platform/Darwin/UserDefaultUtils.h new file mode 100644 index 00000000000000..a0ccad28d38e86 --- /dev/null +++ b/src/platform/Darwin/UserDefaultUtils.h @@ -0,0 +1,27 @@ +/* + * + * Copyright (c) 2024 Project CHIP Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +namespace chip { +namespace DeviceLayer { +namespace Utils { + +uint16_t getUserDefaultDnssdSRPTimeout(); + +} // namespace Utils +} // namespace DeviceLayer +} // namespace chip + diff --git a/src/platform/Darwin/UserDefaultUtils.mm b/src/platform/Darwin/UserDefaultUtils.mm new file mode 100644 index 00000000000000..fb180a376eed6b --- /dev/null +++ b/src/platform/Darwin/UserDefaultUtils.mm @@ -0,0 +1,41 @@ +/* + * + * Copyright (c) 2024 Project CHIP Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * @file + * Implementation for an utility to set configurable parametes via user defaults. + */ +#import +#import "UserDefaultUtils.h" + + +static NSString * const kUserDefaultDomain = @"org.csa-iot.matter.darwindefaults"; +static NSString * const kSRPTimeoutUserDefaultKey = @"SRPTimeoutOverride"; + +namespace chip { +namespace DeviceLayer { +namespace Utils { + +uint16_t getUserDefaultDnssdSRPTimeout() +{ + NSUserDefaults * defaults = [[NSUserDefaults alloc] initWithSuiteName:kUserDefaultDomain]; + return static_cast([defaults integerForKey:kSRPTimeoutUserDefaultKey]); +} + +} // namespace Utils +} // namespace DeviceLayer +} // namespace chip From 82d1168e19589d8d7a01f741e714db3a49867548 Mon Sep 17 00:00:00 2001 From: "Restyled.io" Date: Thu, 18 Apr 2024 23:09:46 +0000 Subject: [PATCH 02/13] Restyled by whitespace --- src/platform/Darwin/UserDefaultUtils.h | 1 - 1 file changed, 1 deletion(-) diff --git a/src/platform/Darwin/UserDefaultUtils.h b/src/platform/Darwin/UserDefaultUtils.h index a0ccad28d38e86..4129ff97b0cfc4 100644 --- a/src/platform/Darwin/UserDefaultUtils.h +++ b/src/platform/Darwin/UserDefaultUtils.h @@ -24,4 +24,3 @@ uint16_t getUserDefaultDnssdSRPTimeout(); } // namespace Utils } // namespace DeviceLayer } // namespace chip - From 3fb4cecff166e6215a3b751c07cc824e3e99ba36 Mon Sep 17 00:00:00 2001 From: "Restyled.io" Date: Thu, 18 Apr 2024 23:09:48 +0000 Subject: [PATCH 03/13] Restyled by clang-format --- src/platform/Darwin/DnssdImpl.cpp | 9 +++++---- src/platform/Darwin/UserDefaultUtils.mm | 17 ++++++++--------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/platform/Darwin/DnssdImpl.cpp b/src/platform/Darwin/DnssdImpl.cpp index 527c02c9286f5f..bc935ed671a202 100644 --- a/src/platform/Darwin/DnssdImpl.cpp +++ b/src/platform/Darwin/DnssdImpl.cpp @@ -78,16 +78,17 @@ void LogOnFailure(const char * name, DNSServiceErrorType err) */ CHIP_ERROR StartSRPTimer(uint16_t timeoutInMSecs, ResolveContext * ctx) { - // Check to see if an user default value exists for the SRP timeout. If it does, override the timeoutInMSecs with user default value. - // To override the timeout value, use ` defaults write org.csa-iot.matter.darwindefaults SRPTimeoutOverride ` - // See UserDefaultUtils.mm for details + // Check to see if an user default value exists for the SRP timeout. If it does, override the timeoutInMSecs with user default + // value. To override the timeout value, use ` defaults write org.csa-iot.matter.darwindefaults SRPTimeoutOverride + // ` See UserDefaultUtils.mm for details uint16_t userDefaultSRPTimeout = getUserDefaultDnssdSRPTimeout(); if (userDefaultSRPTimeout) { timeoutInMSecs = userDefaultSRPTimeout; } VerifyOrReturnValue(ctx != nullptr, CHIP_ERROR_INCORRECT_STATE); - ChipLogProgress(Discovery, "Starting timer to wait for %d milliseconds for possible SRP resolve results for %s", timeoutInMSecs, ctx->instanceName.c_str()); + ChipLogProgress(Discovery, "Starting timer to wait for %d milliseconds for possible SRP resolve results for %s", timeoutInMSecs, + ctx->instanceName.c_str()); return chip::DeviceLayer::SystemLayer().StartTimer(chip::System::Clock::Milliseconds16(timeoutInMSecs), ResolveContext::SRPTimerExpiredCallback, static_cast(ctx)); } diff --git a/src/platform/Darwin/UserDefaultUtils.mm b/src/platform/Darwin/UserDefaultUtils.mm index fb180a376eed6b..be04c29eb94f13 100644 --- a/src/platform/Darwin/UserDefaultUtils.mm +++ b/src/platform/Darwin/UserDefaultUtils.mm @@ -19,23 +19,22 @@ * @file * Implementation for an utility to set configurable parametes via user defaults. */ -#import #import "UserDefaultUtils.h" - +#import static NSString * const kUserDefaultDomain = @"org.csa-iot.matter.darwindefaults"; static NSString * const kSRPTimeoutUserDefaultKey = @"SRPTimeoutOverride"; namespace chip { namespace DeviceLayer { -namespace Utils { + namespace Utils { -uint16_t getUserDefaultDnssdSRPTimeout() -{ - NSUserDefaults * defaults = [[NSUserDefaults alloc] initWithSuiteName:kUserDefaultDomain]; - return static_cast([defaults integerForKey:kSRPTimeoutUserDefaultKey]); -} + uint16_t getUserDefaultDnssdSRPTimeout() + { + NSUserDefaults * defaults = [[NSUserDefaults alloc] initWithSuiteName:kUserDefaultDomain]; + return static_cast([defaults integerForKey:kSRPTimeoutUserDefaultKey]); + } -} // namespace Utils + } // namespace Utils } // namespace DeviceLayer } // namespace chip From 58cbfc8be8ebadcc275ea6d372b53f210aae6c0f Mon Sep 17 00:00:00 2001 From: "Restyled.io" Date: Thu, 18 Apr 2024 23:09:49 +0000 Subject: [PATCH 04/13] Restyled by gn --- src/platform/Darwin/BUILD.gn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/platform/Darwin/BUILD.gn b/src/platform/Darwin/BUILD.gn index b84589d5ab05de..24bfc62f000e1f 100644 --- a/src/platform/Darwin/BUILD.gn +++ b/src/platform/Darwin/BUILD.gn @@ -76,8 +76,8 @@ static_library("Darwin") { "PosixConfig.h", "SystemPlatformConfig.h", "SystemTimeSupport.cpp", + "UserDefaultUtils.h", "UserDefaultUtils.mm", - "UserDefaultUtils.h" ] if (chip_enable_wifi) { From 372414a3d675dd62bb10ecf063baf916d1c021a4 Mon Sep 17 00:00:00 2001 From: Nivedita Sarkar Date: Thu, 18 Apr 2024 17:19:07 -0700 Subject: [PATCH 05/13] Address review comments --- src/platform/Darwin/BUILD.gn | 4 ++-- src/platform/Darwin/DnssdImpl.cpp | 14 ++++++------ .../{UserDefaultUtils.h => UserDefaults.h} | 6 ++--- .../{UserDefaultUtils.mm => UserDefaults.mm} | 22 +++++++------------ 4 files changed, 20 insertions(+), 26 deletions(-) rename src/platform/Darwin/{UserDefaultUtils.h => UserDefaults.h} (90%) rename src/platform/Darwin/{UserDefaultUtils.mm => UserDefaults.mm} (60%) diff --git a/src/platform/Darwin/BUILD.gn b/src/platform/Darwin/BUILD.gn index 24bfc62f000e1f..9dbb8460ae0566 100644 --- a/src/platform/Darwin/BUILD.gn +++ b/src/platform/Darwin/BUILD.gn @@ -76,8 +76,8 @@ static_library("Darwin") { "PosixConfig.h", "SystemPlatformConfig.h", "SystemTimeSupport.cpp", - "UserDefaultUtils.h", - "UserDefaultUtils.mm", + "UserDefaults.h", + "UserDefaults.mm", ] if (chip_enable_wifi) { diff --git a/src/platform/Darwin/DnssdImpl.cpp b/src/platform/Darwin/DnssdImpl.cpp index bc935ed671a202..4c7932367784ec 100644 --- a/src/platform/Darwin/DnssdImpl.cpp +++ b/src/platform/Darwin/DnssdImpl.cpp @@ -17,7 +17,7 @@ #include "DnssdImpl.h" #include "DnssdType.h" #include "MdnsError.h" -#include "UserDefaultUtils.h" +#include "UserDefaults.h" #include @@ -30,7 +30,7 @@ using namespace chip::Dnssd; using namespace chip::Dnssd::Internal; -using namespace chip::DeviceLayer::Utils; +using namespace chip::DeviceLayer; namespace { @@ -79,12 +79,12 @@ void LogOnFailure(const char * name, DNSServiceErrorType err) CHIP_ERROR StartSRPTimer(uint16_t timeoutInMSecs, ResolveContext * ctx) { // Check to see if an user default value exists for the SRP timeout. If it does, override the timeoutInMSecs with user default - // value. To override the timeout value, use ` defaults write org.csa-iot.matter.darwindefaults SRPTimeoutOverride - // ` See UserDefaultUtils.mm for details - uint16_t userDefaultSRPTimeout = getUserDefaultDnssdSRPTimeout(); - if (userDefaultSRPTimeout) + // value. To override the timeout value, use ` defaults write org.csa-iot.matter.darwin SRPTimeoutInMSecsOverride + // ` See UserDefaults.mm for details + uint16_t userDefaultSRPTimeoutInMsecs = static_cast(getUserDefaultDnssdSRPTimeoutInMSecs()); + if (userDefaultSRPTimeoutInMsecs) { - timeoutInMSecs = userDefaultSRPTimeout; + timeoutInMSecs = userDefaultSRPTimeoutInMsecs; } VerifyOrReturnValue(ctx != nullptr, CHIP_ERROR_INCORRECT_STATE); ChipLogProgress(Discovery, "Starting timer to wait for %d milliseconds for possible SRP resolve results for %s", timeoutInMSecs, diff --git a/src/platform/Darwin/UserDefaultUtils.h b/src/platform/Darwin/UserDefaults.h similarity index 90% rename from src/platform/Darwin/UserDefaultUtils.h rename to src/platform/Darwin/UserDefaults.h index 4129ff97b0cfc4..1252f9d2534b48 100644 --- a/src/platform/Darwin/UserDefaultUtils.h +++ b/src/platform/Darwin/UserDefaults.h @@ -15,12 +15,12 @@ * limitations under the License. */ +#pragma once + namespace chip { namespace DeviceLayer { -namespace Utils { -uint16_t getUserDefaultDnssdSRPTimeout(); +uint16_t getUserDefaultDnssdSRPTimeoutInMSecs(); -} // namespace Utils } // namespace DeviceLayer } // namespace chip diff --git a/src/platform/Darwin/UserDefaultUtils.mm b/src/platform/Darwin/UserDefaults.mm similarity index 60% rename from src/platform/Darwin/UserDefaultUtils.mm rename to src/platform/Darwin/UserDefaults.mm index be04c29eb94f13..ca5b54812032b9 100644 --- a/src/platform/Darwin/UserDefaultUtils.mm +++ b/src/platform/Darwin/UserDefaults.mm @@ -15,26 +15,20 @@ * limitations under the License. */ -/** - * @file - * Implementation for an utility to set configurable parametes via user defaults. - */ -#import "UserDefaultUtils.h" #import -static NSString * const kUserDefaultDomain = @"org.csa-iot.matter.darwindefaults"; -static NSString * const kSRPTimeoutUserDefaultKey = @"SRPTimeoutOverride"; +static NSString * const kUserDefaultDomain = @"org.csa-iot.matter.darwin"; +static NSString * const kSRPTimeoutInMsecsUserDefaultKey = @"SRPTimeoutInMSecsOverride"; namespace chip { namespace DeviceLayer { - namespace Utils { - uint16_t getUserDefaultDnssdSRPTimeout() - { - NSUserDefaults * defaults = [[NSUserDefaults alloc] initWithSuiteName:kUserDefaultDomain]; - return static_cast([defaults integerForKey:kSRPTimeoutUserDefaultKey]); - } +uint16_t getUserDefaultDnssdSRPTimeoutInMSecs() +{ + NSUserDefaults * defaults = [[NSUserDefaults alloc] initWithSuiteName:kUserDefaultDomain]; + NSInteger srpTimeoutValue = [defaults integerForKey:kSRPTimeoutInMsecsUserDefaultKey]; + return (srpTimeoutValue < UINT16_MAX) ? static_cast(srpTimeoutValue) : 0; +} - } // namespace Utils } // namespace DeviceLayer } // namespace chip From f6713875a8ed53950f5076ea66a32c072285ba11 Mon Sep 17 00:00:00 2001 From: "Restyled.io" Date: Fri, 19 Apr 2024 00:31:51 +0000 Subject: [PATCH 06/13] Restyled by clang-format --- src/platform/Darwin/UserDefaults.mm | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/platform/Darwin/UserDefaults.mm b/src/platform/Darwin/UserDefaults.mm index ca5b54812032b9..7af9edf3e35af0 100644 --- a/src/platform/Darwin/UserDefaults.mm +++ b/src/platform/Darwin/UserDefaults.mm @@ -23,12 +23,12 @@ namespace chip { namespace DeviceLayer { -uint16_t getUserDefaultDnssdSRPTimeoutInMSecs() -{ - NSUserDefaults * defaults = [[NSUserDefaults alloc] initWithSuiteName:kUserDefaultDomain]; - NSInteger srpTimeoutValue = [defaults integerForKey:kSRPTimeoutInMsecsUserDefaultKey]; - return (srpTimeoutValue < UINT16_MAX) ? static_cast(srpTimeoutValue) : 0; -} + uint16_t getUserDefaultDnssdSRPTimeoutInMSecs() + { + NSUserDefaults * defaults = [[NSUserDefaults alloc] initWithSuiteName:kUserDefaultDomain]; + NSInteger srpTimeoutValue = [defaults integerForKey:kSRPTimeoutInMsecsUserDefaultKey]; + return (srpTimeoutValue < UINT16_MAX) ? static_cast(srpTimeoutValue) : 0; + } } // namespace DeviceLayer } // namespace chip From 96b68fe23d31717c197f58dafd5e582abf8dae50 Mon Sep 17 00:00:00 2001 From: Nivedita Sarkar Date: Thu, 18 Apr 2024 19:08:48 -0700 Subject: [PATCH 07/13] Add a check for filtering negative values and returning 0 --- src/platform/Darwin/UserDefaults.mm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/platform/Darwin/UserDefaults.mm b/src/platform/Darwin/UserDefaults.mm index 7af9edf3e35af0..07fdd31cde09f0 100644 --- a/src/platform/Darwin/UserDefaults.mm +++ b/src/platform/Darwin/UserDefaults.mm @@ -27,7 +27,7 @@ uint16_t getUserDefaultDnssdSRPTimeoutInMSecs() { NSUserDefaults * defaults = [[NSUserDefaults alloc] initWithSuiteName:kUserDefaultDomain]; NSInteger srpTimeoutValue = [defaults integerForKey:kSRPTimeoutInMsecsUserDefaultKey]; - return (srpTimeoutValue < UINT16_MAX) ? static_cast(srpTimeoutValue) : 0; + return (srpTimeoutValue > 0 && srpTimeoutValue < UINT16_MAX) ? static_cast(srpTimeoutValue) : 0; } } // namespace DeviceLayer From 1a3027e4a04c15899ba52dee6e599424a1b0c69d Mon Sep 17 00:00:00 2001 From: Nivi Sarkar <55898241+nivi-apple@users.noreply.github.com> Date: Fri, 19 Apr 2024 10:36:49 -0700 Subject: [PATCH 08/13] Apply suggestions from code review Co-authored-by: Boris Zbarsky --- src/platform/Darwin/DnssdImpl.cpp | 6 +++--- src/platform/Darwin/UserDefaults.h | 3 +-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/platform/Darwin/DnssdImpl.cpp b/src/platform/Darwin/DnssdImpl.cpp index 4c7932367784ec..daacd9666ea736 100644 --- a/src/platform/Darwin/DnssdImpl.cpp +++ b/src/platform/Darwin/DnssdImpl.cpp @@ -78,10 +78,10 @@ void LogOnFailure(const char * name, DNSServiceErrorType err) */ CHIP_ERROR StartSRPTimer(uint16_t timeoutInMSecs, ResolveContext * ctx) { - // Check to see if an user default value exists for the SRP timeout. If it does, override the timeoutInMSecs with user default + // Check to see if a user default value exists for the SRP timeout. If it does, override the timeoutInMSecs with user default // value. To override the timeout value, use ` defaults write org.csa-iot.matter.darwin SRPTimeoutInMSecsOverride - // ` See UserDefaults.mm for details - uint16_t userDefaultSRPTimeoutInMsecs = static_cast(getUserDefaultDnssdSRPTimeoutInMSecs()); + // ` See UserDefaults.mm for details. + uint16_t userDefaultSRPTimeoutInMsecs = getUserDefaultDnssdSRPTimeoutInMSecs(); if (userDefaultSRPTimeoutInMsecs) { timeoutInMSecs = userDefaultSRPTimeoutInMsecs; diff --git a/src/platform/Darwin/UserDefaults.h b/src/platform/Darwin/UserDefaults.h index 1252f9d2534b48..687f2d13b44636 100644 --- a/src/platform/Darwin/UserDefaults.h +++ b/src/platform/Darwin/UserDefaults.h @@ -1,5 +1,4 @@ /* - * * Copyright (c) 2024 Project CHIP Authors * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -20,7 +19,7 @@ namespace chip { namespace DeviceLayer { -uint16_t getUserDefaultDnssdSRPTimeoutInMSecs(); +uint16_t GetUserDefaultDnssdSRPTimeoutInMSecs(); } // namespace DeviceLayer } // namespace chip From 45ff4a831f62ea852e0f4b375b834cb2c1f11d2a Mon Sep 17 00:00:00 2001 From: Nivedita Sarkar Date: Fri, 19 Apr 2024 12:48:01 -0700 Subject: [PATCH 09/13] Return an optional uint16_t value from GetUserDefaultDnssdSRPTimeoutInMSecs --- src/platform/Darwin/DnssdImpl.cpp | 11 ++++------- src/platform/Darwin/UserDefaults.h | 6 +++--- src/platform/Darwin/UserDefaults.mm | 18 ++++++++++++++---- 3 files changed, 21 insertions(+), 14 deletions(-) diff --git a/src/platform/Darwin/DnssdImpl.cpp b/src/platform/Darwin/DnssdImpl.cpp index daacd9666ea736..4a31df323d341d 100644 --- a/src/platform/Darwin/DnssdImpl.cpp +++ b/src/platform/Darwin/DnssdImpl.cpp @@ -30,7 +30,7 @@ using namespace chip::Dnssd; using namespace chip::Dnssd::Internal; -using namespace chip::DeviceLayer; +using namespace chip::Platform; namespace { @@ -39,7 +39,7 @@ constexpr char kLocalDot[] = "local."; constexpr char kSRPDot[] = "default.service.arpa."; // The extra time in milliseconds that we will wait for the resolution on the SRP domain to complete. -constexpr uint16_t kSRPTimeoutInMsec = 3000; +constexpr uint16_t kSRPTimeoutInMsec = 250; constexpr DNSServiceFlags kRegisterFlags = kDNSServiceFlagsNoAutoRename; constexpr DNSServiceFlags kBrowseFlags = kDNSServiceFlagsShareConnection; @@ -81,11 +81,8 @@ CHIP_ERROR StartSRPTimer(uint16_t timeoutInMSecs, ResolveContext * ctx) // Check to see if a user default value exists for the SRP timeout. If it does, override the timeoutInMSecs with user default // value. To override the timeout value, use ` defaults write org.csa-iot.matter.darwin SRPTimeoutInMSecsOverride // ` See UserDefaults.mm for details. - uint16_t userDefaultSRPTimeoutInMsecs = getUserDefaultDnssdSRPTimeoutInMSecs(); - if (userDefaultSRPTimeoutInMsecs) - { - timeoutInMSecs = userDefaultSRPTimeoutInMsecs; - } + timeoutInMSecs = GetUserDefaultDnssdSRPTimeoutInMSecs().value_or(timeoutInMSecs); + VerifyOrReturnValue(ctx != nullptr, CHIP_ERROR_INCORRECT_STATE); ChipLogProgress(Discovery, "Starting timer to wait for %d milliseconds for possible SRP resolve results for %s", timeoutInMSecs, ctx->instanceName.c_str()); diff --git a/src/platform/Darwin/UserDefaults.h b/src/platform/Darwin/UserDefaults.h index 687f2d13b44636..d3f881f5e6ea2a 100644 --- a/src/platform/Darwin/UserDefaults.h +++ b/src/platform/Darwin/UserDefaults.h @@ -17,9 +17,9 @@ #pragma once namespace chip { -namespace DeviceLayer { +namespace Platform { -uint16_t GetUserDefaultDnssdSRPTimeoutInMSecs(); +std::optional GetUserDefaultDnssdSRPTimeoutInMSecs(); -} // namespace DeviceLayer +} // namespace Platform } // namespace chip diff --git a/src/platform/Darwin/UserDefaults.mm b/src/platform/Darwin/UserDefaults.mm index 07fdd31cde09f0..e78c49de56c99a 100644 --- a/src/platform/Darwin/UserDefaults.mm +++ b/src/platform/Darwin/UserDefaults.mm @@ -17,18 +17,28 @@ #import +#include +#include +#include + static NSString * const kUserDefaultDomain = @"org.csa-iot.matter.darwin"; static NSString * const kSRPTimeoutInMsecsUserDefaultKey = @"SRPTimeoutInMSecsOverride"; namespace chip { -namespace DeviceLayer { +namespace Platform { - uint16_t getUserDefaultDnssdSRPTimeoutInMSecs() + std::optional GetUserDefaultDnssdSRPTimeoutInMSecs() { NSUserDefaults * defaults = [[NSUserDefaults alloc] initWithSuiteName:kUserDefaultDomain]; NSInteger srpTimeoutValue = [defaults integerForKey:kSRPTimeoutInMsecsUserDefaultKey]; - return (srpTimeoutValue > 0 && srpTimeoutValue < UINT16_MAX) ? static_cast(srpTimeoutValue) : 0; + if (CanCastTo(srpTimeoutValue)) + { + uint16_t timeoutinMsecs = static_cast(srpTimeoutValue); + ChipLogProgress(Discovery, "Got a user default value for Dnssd SRP timeout - %d msecs", timeoutinMsecs); + return std::make_optional(timeoutinMsecs); + } + return std::nullopt; } -} // namespace DeviceLayer +} // namespace Platform } // namespace chip From c71246f5e392b24154f97d7d82373705cc399d98 Mon Sep 17 00:00:00 2001 From: "Restyled.io" Date: Fri, 19 Apr 2024 19:48:34 +0000 Subject: [PATCH 10/13] Restyled by clang-format --- src/platform/Darwin/DnssdImpl.cpp | 2 +- src/platform/Darwin/UserDefaults.mm | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/platform/Darwin/DnssdImpl.cpp b/src/platform/Darwin/DnssdImpl.cpp index 4a31df323d341d..b80e5958310e68 100644 --- a/src/platform/Darwin/DnssdImpl.cpp +++ b/src/platform/Darwin/DnssdImpl.cpp @@ -81,7 +81,7 @@ CHIP_ERROR StartSRPTimer(uint16_t timeoutInMSecs, ResolveContext * ctx) // Check to see if a user default value exists for the SRP timeout. If it does, override the timeoutInMSecs with user default // value. To override the timeout value, use ` defaults write org.csa-iot.matter.darwin SRPTimeoutInMSecsOverride // ` See UserDefaults.mm for details. - timeoutInMSecs = GetUserDefaultDnssdSRPTimeoutInMSecs().value_or(timeoutInMSecs); + timeoutInMSecs = GetUserDefaultDnssdSRPTimeoutInMSecs().value_or(timeoutInMSecs); VerifyOrReturnValue(ctx != nullptr, CHIP_ERROR_INCORRECT_STATE); ChipLogProgress(Discovery, "Starting timer to wait for %d milliseconds for possible SRP resolve results for %s", timeoutInMSecs, diff --git a/src/platform/Darwin/UserDefaults.mm b/src/platform/Darwin/UserDefaults.mm index e78c49de56c99a..3f39e73f9c57ca 100644 --- a/src/platform/Darwin/UserDefaults.mm +++ b/src/platform/Darwin/UserDefaults.mm @@ -17,8 +17,8 @@ #import -#include #include +#include #include static NSString * const kUserDefaultDomain = @"org.csa-iot.matter.darwin"; @@ -31,8 +31,7 @@ { NSUserDefaults * defaults = [[NSUserDefaults alloc] initWithSuiteName:kUserDefaultDomain]; NSInteger srpTimeoutValue = [defaults integerForKey:kSRPTimeoutInMsecsUserDefaultKey]; - if (CanCastTo(srpTimeoutValue)) - { + if (CanCastTo(srpTimeoutValue)) { uint16_t timeoutinMsecs = static_cast(srpTimeoutValue); ChipLogProgress(Discovery, "Got a user default value for Dnssd SRP timeout - %d msecs", timeoutinMsecs); return std::make_optional(timeoutinMsecs); From bcb529e3a65881b02f0bacacef56657318c88db7 Mon Sep 17 00:00:00 2001 From: Nivedita Sarkar Date: Fri, 19 Apr 2024 12:59:05 -0700 Subject: [PATCH 11/13] Move the inclusion of optional header file in UserDefaults.h --- src/platform/Darwin/UserDefaults.h | 2 ++ src/platform/Darwin/UserDefaults.mm | 1 - 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/platform/Darwin/UserDefaults.h b/src/platform/Darwin/UserDefaults.h index d3f881f5e6ea2a..f191a92ccb115d 100644 --- a/src/platform/Darwin/UserDefaults.h +++ b/src/platform/Darwin/UserDefaults.h @@ -16,6 +16,8 @@ #pragma once +#include + namespace chip { namespace Platform { diff --git a/src/platform/Darwin/UserDefaults.mm b/src/platform/Darwin/UserDefaults.mm index 3f39e73f9c57ca..58f679f3d80885 100644 --- a/src/platform/Darwin/UserDefaults.mm +++ b/src/platform/Darwin/UserDefaults.mm @@ -19,7 +19,6 @@ #include #include -#include static NSString * const kUserDefaultDomain = @"org.csa-iot.matter.darwin"; static NSString * const kSRPTimeoutInMsecsUserDefaultKey = @"SRPTimeoutInMSecsOverride"; From 466241d8f537760153391be8ff50d471b4359936 Mon Sep 17 00:00:00 2001 From: Nivedita Sarkar Date: Fri, 19 Apr 2024 13:07:33 -0700 Subject: [PATCH 12/13] Include UserDefaults.h header in UserDefaults.mm file --- src/platform/Darwin/UserDefaults.mm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/platform/Darwin/UserDefaults.mm b/src/platform/Darwin/UserDefaults.mm index 58f679f3d80885..6cdd1593e846ce 100644 --- a/src/platform/Darwin/UserDefaults.mm +++ b/src/platform/Darwin/UserDefaults.mm @@ -20,6 +20,8 @@ #include #include +#include "UserDefaults.h" + static NSString * const kUserDefaultDomain = @"org.csa-iot.matter.darwin"; static NSString * const kSRPTimeoutInMsecsUserDefaultKey = @"SRPTimeoutInMSecsOverride"; From 7caa86d068324ce6f441e9de927e49f996ec89be Mon Sep 17 00:00:00 2001 From: Nivedita Sarkar Date: Fri, 19 Apr 2024 14:09:56 -0700 Subject: [PATCH 13/13] Include header cstdint from UserDefaults.h --- src/platform/Darwin/UserDefaults.h | 1 + src/platform/Darwin/UserDefaults.mm | 5 ++--- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/platform/Darwin/UserDefaults.h b/src/platform/Darwin/UserDefaults.h index f191a92ccb115d..5df5d2064256b9 100644 --- a/src/platform/Darwin/UserDefaults.h +++ b/src/platform/Darwin/UserDefaults.h @@ -16,6 +16,7 @@ #pragma once +#include #include namespace chip { diff --git a/src/platform/Darwin/UserDefaults.mm b/src/platform/Darwin/UserDefaults.mm index 6cdd1593e846ce..d24b0a4ee20f37 100644 --- a/src/platform/Darwin/UserDefaults.mm +++ b/src/platform/Darwin/UserDefaults.mm @@ -15,12 +15,11 @@ * limitations under the License. */ -#import - +#include "UserDefaults.h" #include #include -#include "UserDefaults.h" +#import static NSString * const kUserDefaultDomain = @"org.csa-iot.matter.darwin"; static NSString * const kSRPTimeoutInMsecsUserDefaultKey = @"SRPTimeoutInMSecsOverride";