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