libweave: Move CommandObserver into public libweave interface
Clients will need to listen for Command changes.
BUG=brillo:1245
TEST='FEATURES=test emerge-gizmo buffet'
Change-Id: I1ba7339127f9d2789a0e09559a875cdc4ecb8df2
Reviewed-on: https://chromium-review.googlesource.com/287069
Tested-by: Vitaly Buka <vitalybuka@chromium.org>
Reviewed-by: Alex Vakulenko <avakulenko@chromium.org>
Commit-Queue: Vitaly Buka <vitalybuka@chromium.org>
diff --git a/libweave/include/weave/command.h b/libweave/include/weave/command.h
index 0df4878..c27b49d 100644
--- a/libweave/include/weave/command.h
+++ b/libweave/include/weave/command.h
@@ -12,9 +12,24 @@
class Command {
public:
+ // This interface lets the command to notify clients about changes.
+ class Observer {
+ public:
+ virtual ~Observer() = default;
+
+ virtual void OnResultsChanged() = 0;
+ virtual void OnStatusChanged() = 0;
+ virtual void OnProgressChanged() = 0;
+ virtual void OnCommandDestroyed() = 0;
+ };
+
// Returns JSON representation of the command.
virtual std::unique_ptr<base::DictionaryValue> ToJson() const = 0;
+ // Adds an observer for this command. The observer object is not owned by this
+ // class.
+ virtual void AddObserver(Observer* observer) = 0;
+
protected:
virtual ~Command() = default;
};
diff --git a/libweave/src/commands/cloud_command_proxy.h b/libweave/src/commands/cloud_command_proxy.h
index 7998df6..db03885 100644
--- a/libweave/src/commands/cloud_command_proxy.h
+++ b/libweave/src/commands/cloud_command_proxy.h
@@ -17,15 +17,15 @@
#include <chromeos/backoff_entry.h>
#include "libweave/src/commands/cloud_command_update_interface.h"
-#include "libweave/src/commands/command_proxy_interface.h"
#include "libweave/src/states/state_change_queue_interface.h"
+#include "weave/command.h"
namespace weave {
class CommandInstance;
// Command proxy which publishes command updates to the cloud.
-class CloudCommandProxy final : public CommandObserver {
+class CloudCommandProxy final : public Command::Observer {
public:
CloudCommandProxy(CommandInstance* command_instance,
CloudCommandUpdateInterface* cloud_command_updater,
diff --git a/libweave/src/commands/command_instance.cc b/libweave/src/commands/command_instance.cc
index 2cfe3d5..37a1ddc 100644
--- a/libweave/src/commands/command_instance.cc
+++ b/libweave/src/commands/command_instance.cc
@@ -10,7 +10,6 @@
#include "libweave/src/commands/command_definition.h"
#include "libweave/src/commands/command_dictionary.h"
-#include "libweave/src/commands/command_proxy_interface.h"
#include "libweave/src/commands/command_queue.h"
#include "libweave/src/commands/prop_types.h"
#include "libweave/src/commands/schema_constants.h"
@@ -172,7 +171,7 @@
return json;
}
-void CommandInstance::AddObserver(CommandObserver* observer) {
+void CommandInstance::AddObserver(Observer* observer) {
observers_.push_back(observer);
}
diff --git a/libweave/src/commands/command_instance.h b/libweave/src/commands/command_instance.h
index d80e0b9..a64fc7c 100644
--- a/libweave/src/commands/command_instance.h
+++ b/libweave/src/commands/command_instance.h
@@ -41,6 +41,7 @@
// Command overrides.
std::unique_ptr<base::DictionaryValue> ToJson() const override;
+ void AddObserver(Observer* observer) override;
// Returns the full command ID.
const std::string& GetID() const { return id_; }
@@ -81,9 +82,6 @@
// Sets the command ID (normally done by CommandQueue when the command
// instance is added to it).
void SetID(const std::string& id) { id_ = id; }
- // Adds a observer for this command. The observer object is not owned by this
- // class.
- void AddObserver(CommandObserver* observer);
// Sets the pointer to queue this command is part of.
void SetCommandQueue(CommandQueue* queue) { queue_ = queue; }
@@ -142,7 +140,7 @@
// Current command status.
std::string status_ = kStatusQueued;
// Command observer for the command.
- std::vector<CommandObserver*> observers_;
+ std::vector<Observer*> observers_;
// Pointer to the command queue this command instance is added to.
// The queue owns the command instance, so it outlives this object.
CommandQueue* queue_ = nullptr;
diff --git a/libweave/src/commands/command_proxy_interface.h b/libweave/src/commands/command_proxy_interface.h
deleted file mode 100644
index 3aeb9bb..0000000
--- a/libweave/src/commands/command_proxy_interface.h
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright 2014 The Chromium OS Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef LIBWEAVE_SRC_COMMANDS_COMMAND_PROXY_INTERFACE_H_
-#define LIBWEAVE_SRC_COMMANDS_COMMAND_PROXY_INTERFACE_H_
-
-#include <string>
-
-#include "libweave/src/commands/schema_utils.h"
-
-namespace weave {
-
-// This interface lets the command instance to update its proxy of command
-// state changes, so that the proxy can then notify clients of the changes over
-// their supported protocol (e.g. D-Bus).
-class CommandObserver {
- public:
- virtual ~CommandObserver() = default;
-
- virtual void OnResultsChanged() = 0;
- virtual void OnStatusChanged() = 0;
- virtual void OnProgressChanged() = 0;
- virtual void OnCommandDestroyed() = 0;
-};
-
-} // namespace weave
-
-#endif // LIBWEAVE_SRC_COMMANDS_COMMAND_PROXY_INTERFACE_H_
diff --git a/libweave/src/commands/dbus_command_proxy.h b/libweave/src/commands/dbus_command_proxy.h
index 3f802ed..62225c7 100644
--- a/libweave/src/commands/dbus_command_proxy.h
+++ b/libweave/src/commands/dbus_command_proxy.h
@@ -12,7 +12,7 @@
#include <chromeos/dbus/dbus_object.h>
#include "buffet/org.chromium.Buffet.Command.h"
-#include "libweave/src/commands/command_proxy_interface.h"
+#include "weave/command.h"
namespace chromeos {
namespace dbus_utils {
@@ -24,7 +24,7 @@
class CommandInstance;
-class DBusCommandProxy : public CommandObserver,
+class DBusCommandProxy : public Command::Observer,
public org::chromium::Buffet::CommandInterface {
public:
DBusCommandProxy(chromeos::dbus_utils::ExportedObjectManager* object_manager,
diff --git a/libweave/src/commands/dbus_command_proxy_unittest.cc b/libweave/src/commands/dbus_command_proxy_unittest.cc
index 32a36b6..ed51387 100644
--- a/libweave/src/commands/dbus_command_proxy_unittest.cc
+++ b/libweave/src/commands/dbus_command_proxy_unittest.cc
@@ -109,7 +109,7 @@
EXPECT_CALL(*mock_exported_object_command_, ExportMethod(_, _, _, _))
.Times(AnyNumber());
- std::unique_ptr<CommandObserver> command_proxy(
+ std::unique_ptr<Command::Observer> command_proxy(
new DBusCommandProxy(nullptr, bus_, command_instance_.get(), cmd_path));
command_instance_->AddObserver(command_proxy.release());
GetCommandProxy()->RegisterAsync(
diff --git a/libweave/src/device_registration_info.cc b/libweave/src/device_registration_info.cc
index fdc933c..5979ac6 100644
--- a/libweave/src/device_registration_info.cc
+++ b/libweave/src/device_registration_info.cc
@@ -938,7 +938,7 @@
<< "' arrived, ID: " << command_instance->GetID();
std::unique_ptr<chromeos::BackoffEntry> backoff_entry{
new chromeos::BackoffEntry{cloud_backoff_policy_.get()}};
- std::unique_ptr<CommandObserver> cloud_proxy{new CloudCommandProxy{
+ std::unique_ptr<Command::Observer> cloud_proxy{new CloudCommandProxy{
command_instance.get(), this, state_manager_->GetStateChangeQueue(),
std::move(backoff_entry), task_runner_}};
command_instance->AddObserver(cloud_proxy.release());