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/examples/daemon/ledflasher/ledflasher.cc b/examples/daemon/ledflasher/ledflasher.cc
index 4733f18..9e4a9e1 100644
--- a/examples/daemon/ledflasher/ledflasher.cc
+++ b/examples/daemon/ledflasher/ledflasher.cc
@@ -66,10 +66,10 @@
return;
LOG(INFO) << "received command: " << cmd->GetName();
int32_t led_index = 0;
- auto params = cmd->GetParameters();
+ const auto& params = cmd->GetParameters();
bool cmd_value = false;
- if (params->GetInteger("_led", &led_index) &&
- params->GetBoolean("_on", &cmd_value)) {
+ if (params.GetInteger("_led", &led_index) &&
+ params.GetBoolean("_on", &cmd_value)) {
// Display this command in terminal
LOG(INFO) << cmd->GetName() << " _led: " << led_index
<< ", _on: " << (cmd_value ? "true" : "false");
@@ -96,9 +96,9 @@
if (!cmd)
return;
LOG(INFO) << "received command: " << cmd->GetName();
- auto params = cmd->GetParameters();
+ const auto& params = cmd->GetParameters();
int32_t led_index = 0;
- if (params->GetInteger("_led", &led_index)) {
+ if (params.GetInteger("_led", &led_index)) {
LOG(INFO) << cmd->GetName() << " _led: " << led_index;
led_index--;
led_status_[led_index] = ~led_status_[led_index];
diff --git a/examples/daemon/light/light.cc b/examples/daemon/light/light.cc
index 31e3a24..90680d2 100644
--- a/examples/daemon/light/light.cc
+++ b/examples/daemon/light/light.cc
@@ -122,9 +122,9 @@
if (!cmd)
return;
LOG(INFO) << "received command: " << cmd->GetName();
- auto params = cmd->GetParameters();
+ const auto& params = cmd->GetParameters();
int32_t brightness_value = 0;
- if (params->GetInteger("brightness", &brightness_value)) {
+ if (params.GetInteger("brightness", &brightness_value)) {
// Display this command in terminal.
LOG(INFO) << cmd->GetName() << " brightness: " << brightness_value;
@@ -146,9 +146,9 @@
if (!cmd)
return;
LOG(INFO) << "received command: " << cmd->GetName();
- auto params = cmd->GetParameters();
+ const auto& params = cmd->GetParameters();
std::string requested_state;
- if (params->GetString("state", &requested_state)) {
+ if (params.GetString("state", &requested_state)) {
LOG(INFO) << cmd->GetName() << " state: " << requested_state;
bool new_light_status = requested_state == "on";
@@ -172,9 +172,9 @@
if (!cmd)
return;
LOG(INFO) << "received command: " << cmd->GetName();
- auto params = cmd->GetParameters();
- base::DictionaryValue* colorXY = nullptr;
- if (params->GetDictionary("_colorSetting", &colorXY)) {
+ const auto& params = cmd->GetParameters();
+ const base::DictionaryValue* colorXY = nullptr;
+ if (params.GetDictionary("_colorSetting", &colorXY)) {
bool updateState = false;
double X = 0.0;
double Y = 0.0;
diff --git a/examples/daemon/lock/lock.cc b/examples/daemon/lock/lock.cc
index 860020c..10bea00 100644
--- a/examples/daemon/lock/lock.cc
+++ b/examples/daemon/lock/lock.cc
@@ -72,9 +72,9 @@
if (!cmd)
return;
LOG(INFO) << "received command: " << cmd->GetName();
- auto params = cmd->GetParameters();
+ const auto& params = cmd->GetParameters();
std::string requested_state;
- if (params->GetString("lockedState", &requested_state)) {
+ if (params.GetString("lockedState", &requested_state)) {
LOG(INFO) << cmd->GetName() << " state: " << requested_state;
weave::lockstate::LockState new_lock_status;
diff --git a/examples/daemon/sample/sample.cc b/examples/daemon/sample/sample.cc
index 2ad56e3..811e9fb 100644
--- a/examples/daemon/sample/sample.cc
+++ b/examples/daemon/sample/sample.cc
@@ -69,9 +69,9 @@
return;
LOG(INFO) << "received command: " << cmd->GetName();
- auto params = cmd->GetParameters();
+ const auto& params = cmd->GetParameters();
std::string name;
- if (!params->GetString("_name", &name)) {
+ if (!params.GetString("_name", &name)) {
weave::ErrorPtr error;
weave::Error::AddTo(&error, FROM_HERE, "example",
"invalid_parameter_value", "Name is missing");
@@ -94,7 +94,7 @@
base::DictionaryValue state;
state.SetInteger("_sample._ping_count", ++ping_count_);
device_->SetStateProperties(state, nullptr);
- LOG(INFO) << "New state: " << *device_->GetState();
+ LOG(INFO) << "New state: " << device_->GetState();
base::DictionaryValue result;
cmd->Complete(result, nullptr);
@@ -108,9 +108,9 @@
return;
LOG(INFO) << "received command: " << cmd->GetName();
- auto params = cmd->GetParameters();
+ const auto& params = cmd->GetParameters();
int seconds;
- if (!params->GetInteger("_seconds", &seconds))
+ if (!params.GetInteger("_seconds", &seconds))
seconds = 10;
LOG(INFO) << "starting countdown";
@@ -123,9 +123,9 @@
return;
if (seconds > 0) {
- auto params = cmd->GetParameters();
+ const auto& params = cmd->GetParameters();
std::string todo;
- params->GetString("_todo", &todo);
+ params.GetString("_todo", &todo);
LOG(INFO) << "countdown tick: " << seconds << " seconds left";
base::DictionaryValue progress;
diff --git a/examples/daemon/speaker/speaker.cc b/examples/daemon/speaker/speaker.cc
index 89595b0..cd7d62f 100644
--- a/examples/daemon/speaker/speaker.cc
+++ b/examples/daemon/speaker/speaker.cc
@@ -72,10 +72,10 @@
return;
LOG(INFO) << "received command: " << cmd->GetName();
- auto params = cmd->GetParameters();
+ const auto& params = cmd->GetParameters();
// Handle volume parameter
int32_t volume_value = 0;
- if (params->GetInteger("volume", &volume_value)) {
+ if (params.GetInteger("volume", &volume_value)) {
// Display this command in terminal.
LOG(INFO) << cmd->GetName() << " volume: " << volume_value;
@@ -89,7 +89,7 @@
// Handle isMuted parameter
bool isMuted_status = false;
- if (params->GetBoolean("isMuted", &isMuted_status)) {
+ if (params.GetBoolean("isMuted", &isMuted_status)) {
// Display this command in terminal.
LOG(INFO) << cmd->GetName() << " is "
<< (isMuted_status ? "muted" : "not muted");
@@ -111,9 +111,9 @@
if (!cmd)
return;
LOG(INFO) << "received command: " << cmd->GetName();
- auto params = cmd->GetParameters();
+ const auto& params = cmd->GetParameters();
std::string requested_state;
- if (params->GetString("state", &requested_state)) {
+ if (params.GetString("state", &requested_state)) {
LOG(INFO) << cmd->GetName() << " state: " << requested_state;
bool new_speaker_status = requested_state == "on";