blob: bf2868dbfe580b937e07f899f1324bb811a9eba7 [file] [log] [blame]
Vitaly Bukaa0305d32015-07-27 16:08:51 -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_DBUS_COMMAND_PROXY_H_
6#define BUFFET_DBUS_COMMAND_PROXY_H_
7
8#include <string>
9
10#include <base/macros.h>
Vitaly Bukaf6027cb2015-07-31 16:20:48 -070011#include <base/scoped_observer.h>
Vitaly Bukaa0305d32015-07-27 16:08:51 -070012#include <chromeos/dbus/data_serialization.h>
13#include <chromeos/dbus/dbus_object.h>
Vitaly Bukae2713ac2015-08-03 13:50:01 -070014#include <weave/command.h>
Vitaly Bukaa0305d32015-07-27 16:08:51 -070015
Alex Vakulenko63bdf082015-08-21 09:27:12 -070016#include "buffet/dbus_bindings/com.android.Weave.Command.h"
Vitaly Bukaa0305d32015-07-27 16:08:51 -070017
18namespace chromeos {
19namespace dbus_utils {
20class ExportedObjectManager;
21} // namespace dbus_utils
22} // namespace chromeos
23
24namespace buffet {
25
Alex Vakulenko2915a7b2015-10-07 17:04:00 -070026class DBusCommandProxy : public com::android::Weave::CommandInterface {
Vitaly Bukaa0305d32015-07-27 16:08:51 -070027 public:
28 DBusCommandProxy(chromeos::dbus_utils::ExportedObjectManager* object_manager,
29 const scoped_refptr<dbus::Bus>& bus,
Alex Vakulenko2915a7b2015-10-07 17:04:00 -070030 const std::weak_ptr<weave::Command>& command,
Vitaly Bukaa0305d32015-07-27 16:08:51 -070031 std::string object_path);
32 ~DBusCommandProxy() override = default;
33
34 void RegisterAsync(
35 const chromeos::dbus_utils::AsyncEventSequencer::CompletionAction&
36 completion_callback);
37
Vitaly Bukaa0305d32015-07-27 16:08:51 -070038 private:
Alex Vakulenko63bdf082015-08-21 09:27:12 -070039 // Handles calls to com.android.Weave.Command.SetProgress(progress).
Vitaly Bukaa0305d32015-07-27 16:08:51 -070040 bool SetProgress(chromeos::ErrorPtr* error,
41 const chromeos::VariantDictionary& progress) override;
Alex Vakulenko63bdf082015-08-21 09:27:12 -070042 // Handles calls to com.android.Weave.Command.SetResults(results).
Vitaly Bukaa0305d32015-07-27 16:08:51 -070043 bool SetResults(chromeos::ErrorPtr* error,
44 const chromeos::VariantDictionary& results) override;
Alex Vakulenko63bdf082015-08-21 09:27:12 -070045 // Handles calls to com.android.Weave.Command.Abort().
Alex Vakulenko2915a7b2015-10-07 17:04:00 -070046 bool Abort(chromeos::ErrorPtr* error) override;
Alex Vakulenko63bdf082015-08-21 09:27:12 -070047 // Handles calls to com.android.Weave.Command.Cancel().
Alex Vakulenko2915a7b2015-10-07 17:04:00 -070048 bool Cancel(chromeos::ErrorPtr* error) override;
Alex Vakulenko63bdf082015-08-21 09:27:12 -070049 // Handles calls to com.android.Weave.Command.Done().
Alex Vakulenko2915a7b2015-10-07 17:04:00 -070050 bool Done(chromeos::ErrorPtr* error) override;
Vitaly Bukaa0305d32015-07-27 16:08:51 -070051
Alex Vakulenko2915a7b2015-10-07 17:04:00 -070052 std::weak_ptr<weave::Command> command_;
Alex Vakulenko63bdf082015-08-21 09:27:12 -070053 com::android::Weave::CommandAdaptor dbus_adaptor_{this};
Vitaly Bukaa0305d32015-07-27 16:08:51 -070054 chromeos::dbus_utils::DBusObject dbus_object_;
55
Vitaly Bukaa0305d32015-07-27 16:08:51 -070056 friend class DBusCommandProxyTest;
57 friend class DBusCommandDispacherTest;
58 DISALLOW_COPY_AND_ASSIGN(DBusCommandProxy);
59};
60
61} // namespace buffet
62
63#endif // BUFFET_DBUS_COMMAND_PROXY_H_