Replace Get* methods returning unique_ptr with reference alternative
Existing code created temporarily objects and returned them to the
client. It was not efficient and error-prone as client code could
retrieve pointers to internal objects without keeping unique_ptr alive.
Change-Id: I9e17c8d9f66dfc9f52ce9ffc9a31992b16b00461
Reviewed-on: https://weave-review.googlesource.com/1672
Reviewed-by: Alex Vakulenko <avakulenko@google.com>
diff --git a/src/base_api_handler.cc b/src/base_api_handler.cc
index 3d22a10..1423dd1 100644
--- a/src/base_api_handler.cc
+++ b/src/base_api_handler.cc
@@ -99,10 +99,10 @@
bool discovery_enabled{settings.local_discovery_enabled};
bool pairing_enabled{settings.local_pairing_enabled};
- auto parameters = command->GetParameters();
- parameters->GetString("localAnonymousAccessMaxRole", &anonymous_access_role);
- parameters->GetBoolean("localDiscoveryEnabled", &discovery_enabled);
- parameters->GetBoolean("localPairingEnabled", &pairing_enabled);
+ const auto& parameters = command->GetParameters();
+ parameters.GetString("localAnonymousAccessMaxRole", &anonymous_access_role);
+ parameters.GetBoolean("localDiscoveryEnabled", &discovery_enabled);
+ parameters.GetBoolean("localPairingEnabled", &pairing_enabled);
AuthScope auth_scope{AuthScope::kNone};
if (!StringToEnum(anonymous_access_role, &auth_scope)) {
@@ -144,10 +144,10 @@
std::string description{settings.description};
std::string location{settings.location};
- auto parameters = command->GetParameters();
- parameters->GetString("name", &name);
- parameters->GetString("description", &description);
- parameters->GetString("location", &location);
+ const auto& parameters = command->GetParameters();
+ parameters.GetString("name", &name);
+ parameters.GetString("description", &description);
+ parameters.GetString("location", &location);
device_info_->UpdateDeviceInfo(name, description, location);
command->Complete({}, nullptr);