manager.h revision b6351535f5f48a079dbf7c8cb9d9ce66263c645f
14b5f04c56a2f13b4ec178ce430ea57ddadf1225fChristopher Wiley// Copyright 2014 The Chromium OS Authors. All rights reserved.
24b5f04c56a2f13b4ec178ce430ea57ddadf1225fChristopher Wiley// Use of this source code is governed by a BSD-style license that can be
34b5f04c56a2f13b4ec178ce430ea57ddadf1225fChristopher Wiley// found in the LICENSE file.
44b5f04c56a2f13b4ec178ce430ea57ddadf1225fChristopher Wiley
54b5f04c56a2f13b4ec178ce430ea57ddadf1225fChristopher Wiley#ifndef BUFFET_MANAGER_H_
64b5f04c56a2f13b4ec178ce430ea57ddadf1225fChristopher Wiley#define BUFFET_MANAGER_H_
74b5f04c56a2f13b4ec178ce430ea57ddadf1225fChristopher Wiley
8b6351535f5f48a079dbf7c8cb9d9ce66263c645fAlex Vakulenko#include <map>
924aa1222afa953e7f94c7729af5084d816ed46bfAlex Vakulenko#include <memory>
1024aa1222afa953e7f94c7729af5084d816ed46bfAlex Vakulenko#include <string>
1124aa1222afa953e7f94c7729af5084d816ed46bfAlex Vakulenko
124b5f04c56a2f13b4ec178ce430ea57ddadf1225fChristopher Wiley#include <base/basictypes.h>
13d71774fa4971503ddcaae6a0cc70a37702934f14Christopher Wiley#include <base/memory/weak_ptr.h>
14f3d77e5f9fd79d43057d22e95d659cb2ff92e4b3Alex Vakulenko#include <base/values.h>
15b6351535f5f48a079dbf7c8cb9d9ce66263c645fAlex Vakulenko#include <chromeos/dbus/dbus_object.h>
16b6351535f5f48a079dbf7c8cb9d9ce66263c645fAlex Vakulenko#include <chromeos/error.h>
17da35813911ea3de23c2d53a2e334e7df308a1849Christopher Wiley#include <chromeos/exported_property_set.h>
184b5f04c56a2f13b4ec178ce430ea57ddadf1225fChristopher Wiley
19f3d77e5f9fd79d43057d22e95d659cb2ff92e4b3Alex Vakulenko#include "buffet/device_registration_info.h"
20106686a91f2b7606dc3e3f05355f29d0ba43aee8Christopher Wiley
211aa980ea5f5325cb5f5fc43c1748fbb393c6ec51Christopher Wileynamespace chromeos {
22d71774fa4971503ddcaae6a0cc70a37702934f14Christopher Wileynamespace dbus_utils {
23d71774fa4971503ddcaae6a0cc70a37702934f14Christopher Wileyclass ExportedObjectManager;
24d71774fa4971503ddcaae6a0cc70a37702934f14Christopher Wiley}  // namespace dbus_utils
251aa980ea5f5325cb5f5fc43c1748fbb393c6ec51Christopher Wiley}  // namespace chromeos
261aa980ea5f5325cb5f5fc43c1748fbb393c6ec51Christopher Wiley
271aa980ea5f5325cb5f5fc43c1748fbb393c6ec51Christopher Wileynamespace buffet {
281aa980ea5f5325cb5f5fc43c1748fbb393c6ec51Christopher Wiley
291aa980ea5f5325cb5f5fc43c1748fbb393c6ec51Christopher Wileyclass CommandManager;
304b5f04c56a2f13b4ec178ce430ea57ddadf1225fChristopher Wiley
314b5f04c56a2f13b4ec178ce430ea57ddadf1225fChristopher Wiley// The Manager is responsible for global state of Buffet.  It exposes
324b5f04c56a2f13b4ec178ce430ea57ddadf1225fChristopher Wiley// interfaces which affect the entire device such as device registration and
334b5f04c56a2f13b4ec178ce430ea57ddadf1225fChristopher Wiley// device state.
34b6351535f5f48a079dbf7c8cb9d9ce66263c645fAlex Vakulenkoclass Manager final {
354b5f04c56a2f13b4ec178ce430ea57ddadf1225fChristopher Wiley public:
36b6351535f5f48a079dbf7c8cb9d9ce66263c645fAlex Vakulenko  explicit Manager(
37b6351535f5f48a079dbf7c8cb9d9ce66263c645fAlex Vakulenko      const base::WeakPtr<chromeos::dbus_utils::ExportedObjectManager>&
38b6351535f5f48a079dbf7c8cb9d9ce66263c645fAlex Vakulenko          object_manager);
39b6351535f5f48a079dbf7c8cb9d9ce66263c645fAlex Vakulenko  void Init(
40b6351535f5f48a079dbf7c8cb9d9ce66263c645fAlex Vakulenko      const chromeos::dbus_utils::AsyncEventSequencer::CompletionAction& cb);
414b5f04c56a2f13b4ec178ce430ea57ddadf1225fChristopher Wiley
424b5f04c56a2f13b4ec178ce430ea57ddadf1225fChristopher Wiley private:
43b6351535f5f48a079dbf7c8cb9d9ce66263c645fAlex Vakulenko  // DBus properties:
44b6351535f5f48a079dbf7c8cb9d9ce66263c645fAlex Vakulenko  chromeos::dbus_utils::ExportedProperty<std::string> state_;
45106686a91f2b7606dc3e3f05355f29d0ba43aee8Christopher Wiley
46b6351535f5f48a079dbf7c8cb9d9ce66263c645fAlex Vakulenko  // DBus methods:
47f3d77e5f9fd79d43057d22e95d659cb2ff92e4b3Alex Vakulenko  // Handles calls to org.chromium.Buffet.Manager.CheckDeviceRegistered().
48b6351535f5f48a079dbf7c8cb9d9ce66263c645fAlex Vakulenko  std::string HandleCheckDeviceRegistered(chromeos::ErrorPtr* error);
49f3d77e5f9fd79d43057d22e95d659cb2ff92e4b3Alex Vakulenko  // Handles calls to org.chromium.Buffet.Manager.GetDeviceInfo().
50b6351535f5f48a079dbf7c8cb9d9ce66263c645fAlex Vakulenko  std::string HandleGetDeviceInfo(chromeos::ErrorPtr* error);
51f3d77e5f9fd79d43057d22e95d659cb2ff92e4b3Alex Vakulenko  // Handles calls to org.chromium.Buffet.Manager.StartRegisterDevice().
52b6351535f5f48a079dbf7c8cb9d9ce66263c645fAlex Vakulenko  std::string HandleStartRegisterDevice(chromeos::ErrorPtr* error,
53b6351535f5f48a079dbf7c8cb9d9ce66263c645fAlex Vakulenko                                        const std::map<std::string,
54b6351535f5f48a079dbf7c8cb9d9ce66263c645fAlex Vakulenko                                        std::unique_ptr<base::Value>>& params);
55f3d77e5f9fd79d43057d22e95d659cb2ff92e4b3Alex Vakulenko  // Handles calls to org.chromium.Buffet.Manager.FinishRegisterDevice().
56b6351535f5f48a079dbf7c8cb9d9ce66263c645fAlex Vakulenko  std::string HandleFinishRegisterDevice(chromeos::ErrorPtr* error,
57b6351535f5f48a079dbf7c8cb9d9ce66263c645fAlex Vakulenko                                         const std::string& user_auth_code);
584b5f04c56a2f13b4ec178ce430ea57ddadf1225fChristopher Wiley  // Handles calls to org.chromium.Buffet.Manager.UpdateState().
59b6351535f5f48a079dbf7c8cb9d9ce66263c645fAlex Vakulenko  void HandleUpdateState(chromeos::ErrorPtr* error,
60b6351535f5f48a079dbf7c8cb9d9ce66263c645fAlex Vakulenko                         const std::string& json_state_fragment);
612ffa00444214485907c8e9598e3de76d07da585dChristopher Wiley  // Handles calls to org.chromium.Buffet.Manager.Test()
62b6351535f5f48a079dbf7c8cb9d9ce66263c645fAlex Vakulenko  void HandleTestMethod(chromeos::ErrorPtr* error);
634b5f04c56a2f13b4ec178ce430ea57ddadf1225fChristopher Wiley
64b6351535f5f48a079dbf7c8cb9d9ce66263c645fAlex Vakulenko  chromeos::dbus_utils::DBusObject dbus_object_;
654b5f04c56a2f13b4ec178ce430ea57ddadf1225fChristopher Wiley
66cf9c146c3fd784f5266312cee2c86c35dd581660Alex Vakulenko  std::shared_ptr<CommandManager> command_manager_;
6798025c2e25370c9aaf72fd93498839c11dff2c79Alex Vakulenko  std::unique_ptr<DeviceRegistrationInfo> device_info_;
68f3d77e5f9fd79d43057d22e95d659cb2ff92e4b3Alex Vakulenko
694b5f04c56a2f13b4ec178ce430ea57ddadf1225fChristopher Wiley  DISALLOW_COPY_AND_ASSIGN(Manager);
704b5f04c56a2f13b4ec178ce430ea57ddadf1225fChristopher Wiley};
714b5f04c56a2f13b4ec178ce430ea57ddadf1225fChristopher Wiley
724b5f04c56a2f13b4ec178ce430ea57ddadf1225fChristopher Wiley}  // namespace buffet
734b5f04c56a2f13b4ec178ce430ea57ddadf1225fChristopher Wiley
744b5f04c56a2f13b4ec178ce430ea57ddadf1225fChristopher Wiley#endif  // BUFFET_MANAGER_H_
75