blob: 553470e686519d0c0239e32e0e9b4f42967bbc6d [file] [log] [blame]
// 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 BUFFET_COMMANDS_DBUS_COMMAND_PROXY_H_
#define BUFFET_COMMANDS_DBUS_COMMAND_PROXY_H_
#include <memory>
#include <string>
#include <base/macros.h>
#include <chromeos/dbus/data_serialization.h>
#include <chromeos/dbus/dbus_object.h>
#include "buffet/commands/command_proxy_interface.h"
namespace chromeos {
namespace dbus_utils {
class ExportedObjectManager;
} // namespace dbus_utils
} // namespace chromeos
namespace buffet {
class CommandInstance;
class DBusCommandProxy : public CommandProxyInterface {
public:
DBusCommandProxy(chromeos::dbus_utils::ExportedObjectManager* object_manager,
const scoped_refptr<dbus::Bus>& bus,
CommandInstance* command_instance);
~DBusCommandProxy() override = default;
void RegisterAsync(
const chromeos::dbus_utils::AsyncEventSequencer::CompletionAction&
completion_callback);
// CommandProxyInterface implementation/overloads.
void OnStatusChanged(const std::string& status) override;
void OnProgressChanged(int progress) override;
private:
// DBus properties for org.chromium.Buffet.Command interface.
chromeos::dbus_utils::ExportedProperty<std::string> name_;
chromeos::dbus_utils::ExportedProperty<std::string> category_;
chromeos::dbus_utils::ExportedProperty<std::string> id_;
chromeos::dbus_utils::ExportedProperty<std::string> status_;
chromeos::dbus_utils::ExportedProperty<int32_t> progress_;
chromeos::dbus_utils::ExportedProperty<chromeos::VariantDictionary>
parameters_;
// Handles calls to org.chromium.Buffet.Command.SetProgress(progress).
void HandleSetProgress(chromeos::ErrorPtr* error, int32_t progress);
// Handles calls to org.chromium.Buffet.Command.Abort().
void HandleAbort(chromeos::ErrorPtr* error);
// Handles calls to org.chromium.Buffet.Command.Cancel().
void HandleCancel(chromeos::ErrorPtr* error);
// Handles calls to org.chromium.Buffet.Command.Done().
void HandleDone(chromeos::ErrorPtr* error);
dbus::ObjectPath object_path_;
CommandInstance* command_instance_;
chromeos::dbus_utils::DBusObject dbus_object_;
friend class DBusCommandProxyTest;
friend class DBusCommandDispacherTest;
DISALLOW_COPY_AND_ASSIGN(DBusCommandProxy);
};
} // namespace buffet
#endif // BUFFET_COMMANDS_DBUS_COMMAND_PROXY_H_