blob: 553470e686519d0c0239e32e0e9b4f42967bbc6d [file] [log] [blame]
Alex Vakulenko4866ac92014-08-20 12:53:33 -07001// Copyright 2014 The Chromium OS Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef BUFFET_COMMANDS_DBUS_COMMAND_PROXY_H_
6#define BUFFET_COMMANDS_DBUS_COMMAND_PROXY_H_
7
8#include <memory>
9#include <string>
10
Alex Vakulenko132617a2014-09-04 08:59:43 -070011#include <base/macros.h>
Alex Vakulenkof6b38712014-09-03 16:23:38 -070012#include <chromeos/dbus/data_serialization.h>
Alex Vakulenko4866ac92014-08-20 12:53:33 -070013#include <chromeos/dbus/dbus_object.h>
14
Alex Vakulenkof6b38712014-09-03 16:23:38 -070015#include "buffet/commands/command_proxy_interface.h"
16
Alex Vakulenko4866ac92014-08-20 12:53:33 -070017namespace chromeos {
18namespace dbus_utils {
19class ExportedObjectManager;
20} // namespace dbus_utils
21} // namespace chromeos
22
23namespace buffet {
24
25class CommandInstance;
26
Alex Vakulenkof6b38712014-09-03 16:23:38 -070027class DBusCommandProxy : public CommandProxyInterface {
Alex Vakulenko4866ac92014-08-20 12:53:33 -070028 public:
29 DBusCommandProxy(chromeos::dbus_utils::ExportedObjectManager* object_manager,
30 const scoped_refptr<dbus::Bus>& bus,
31 CommandInstance* command_instance);
Alex Vakulenkof6b38712014-09-03 16:23:38 -070032 ~DBusCommandProxy() override = default;
Alex Vakulenko4866ac92014-08-20 12:53:33 -070033
34 void RegisterAsync(
35 const chromeos::dbus_utils::AsyncEventSequencer::CompletionAction&
36 completion_callback);
37
Alex Vakulenkof6b38712014-09-03 16:23:38 -070038 // CommandProxyInterface implementation/overloads.
39 void OnStatusChanged(const std::string& status) override;
40 void OnProgressChanged(int progress) override;
41
Alex Vakulenko4866ac92014-08-20 12:53:33 -070042 private:
43 // DBus properties for org.chromium.Buffet.Command interface.
44 chromeos::dbus_utils::ExportedProperty<std::string> name_;
45 chromeos::dbus_utils::ExportedProperty<std::string> category_;
46 chromeos::dbus_utils::ExportedProperty<std::string> id_;
47 chromeos::dbus_utils::ExportedProperty<std::string> status_;
48 chromeos::dbus_utils::ExportedProperty<int32_t> progress_;
Alex Vakulenko576c9792014-09-22 16:49:45 -070049 chromeos::dbus_utils::ExportedProperty<chromeos::VariantDictionary>
Alex Vakulenkof6b38712014-09-03 16:23:38 -070050 parameters_;
Alex Vakulenko4866ac92014-08-20 12:53:33 -070051
52 // Handles calls to org.chromium.Buffet.Command.SetProgress(progress).
53 void HandleSetProgress(chromeos::ErrorPtr* error, int32_t progress);
54 // Handles calls to org.chromium.Buffet.Command.Abort().
55 void HandleAbort(chromeos::ErrorPtr* error);
56 // Handles calls to org.chromium.Buffet.Command.Cancel().
57 void HandleCancel(chromeos::ErrorPtr* error);
58 // Handles calls to org.chromium.Buffet.Command.Done().
59 void HandleDone(chromeos::ErrorPtr* error);
60
61 dbus::ObjectPath object_path_;
62 CommandInstance* command_instance_;
63
64 chromeos::dbus_utils::DBusObject dbus_object_;
65
66 friend class DBusCommandProxyTest;
Alex Vakulenkof6b38712014-09-03 16:23:38 -070067 friend class DBusCommandDispacherTest;
Alex Vakulenko4866ac92014-08-20 12:53:33 -070068 DISALLOW_COPY_AND_ASSIGN(DBusCommandProxy);
69};
70
71} // namespace buffet
72
73#endif // BUFFET_COMMANDS_DBUS_COMMAND_PROXY_H_