manager.h revision f3d77e5f9fd79d43057d22e95d659cb2ff92e4b3
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 84b5f04c56a2f13b4ec178ce430ea57ddadf1225fChristopher Wiley#include <base/basictypes.h> 94b5f04c56a2f13b4ec178ce430ea57ddadf1225fChristopher Wiley#include <base/memory/scoped_ptr.h> 10f3d77e5f9fd79d43057d22e95d659cb2ff92e4b3Alex Vakulenko#include <base/values.h> 114b5f04c56a2f13b4ec178ce430ea57ddadf1225fChristopher Wiley#include <dbus/message.h> 1254028f99aaa6917511102fc0572549a966257a8aChristopher Wiley#include <dbus/object_path.h> 13f3d77e5f9fd79d43057d22e95d659cb2ff92e4b3Alex Vakulenko#include <memory> 144b5f04c56a2f13b4ec178ce430ea57ddadf1225fChristopher Wiley 15106686a91f2b7606dc3e3f05355f29d0ba43aee8Christopher Wiley#include "buffet/dbus_constants.h" 16106686a91f2b7606dc3e3f05355f29d0ba43aee8Christopher Wiley#include "buffet/exported_property_set.h" 17f3d77e5f9fd79d43057d22e95d659cb2ff92e4b3Alex Vakulenko#include "buffet/device_registration_info.h" 18106686a91f2b7606dc3e3f05355f29d0ba43aee8Christopher Wiley 194b5f04c56a2f13b4ec178ce430ea57ddadf1225fChristopher Wileynamespace buffet { 204b5f04c56a2f13b4ec178ce430ea57ddadf1225fChristopher Wiley 214b5f04c56a2f13b4ec178ce430ea57ddadf1225fChristopher Wileyclass DBusManager; 224b5f04c56a2f13b4ec178ce430ea57ddadf1225fChristopher Wiley 234b5f04c56a2f13b4ec178ce430ea57ddadf1225fChristopher Wiley// The Manager is responsible for global state of Buffet. It exposes 244b5f04c56a2f13b4ec178ce430ea57ddadf1225fChristopher Wiley// interfaces which affect the entire device such as device registration and 254b5f04c56a2f13b4ec178ce430ea57ddadf1225fChristopher Wiley// device state. 264b5f04c56a2f13b4ec178ce430ea57ddadf1225fChristopher Wileyclass Manager { 274b5f04c56a2f13b4ec178ce430ea57ddadf1225fChristopher Wiley public: 2854028f99aaa6917511102fc0572549a966257a8aChristopher Wiley typedef base::Callback<void(bool success)> OnInitFinish; 2954028f99aaa6917511102fc0572549a966257a8aChristopher Wiley 3054028f99aaa6917511102fc0572549a966257a8aChristopher Wiley Manager(dbus::Bus* bus); 314b5f04c56a2f13b4ec178ce430ea57ddadf1225fChristopher Wiley ~Manager(); 3254028f99aaa6917511102fc0572549a966257a8aChristopher Wiley void Init(const OnInitFinish& cb); 334b5f04c56a2f13b4ec178ce430ea57ddadf1225fChristopher Wiley 344b5f04c56a2f13b4ec178ce430ea57ddadf1225fChristopher Wiley private: 35106686a91f2b7606dc3e3f05355f29d0ba43aee8Christopher Wiley struct Properties: public dbus_utils::ExportedPropertySet { 36106686a91f2b7606dc3e3f05355f29d0ba43aee8Christopher Wiley public: 37106686a91f2b7606dc3e3f05355f29d0ba43aee8Christopher Wiley dbus_utils::ExportedProperty<std::string> state_; 3854028f99aaa6917511102fc0572549a966257a8aChristopher Wiley Properties(dbus::Bus* bus) 3954028f99aaa6917511102fc0572549a966257a8aChristopher Wiley : dbus_utils::ExportedPropertySet( 4054028f99aaa6917511102fc0572549a966257a8aChristopher Wiley bus, dbus::ObjectPath(dbus_constants::kManagerServicePath)) { 41106686a91f2b7606dc3e3f05355f29d0ba43aee8Christopher Wiley RegisterProperty(dbus_constants::kManagerInterface, "State", &state_); 42106686a91f2b7606dc3e3f05355f29d0ba43aee8Christopher Wiley } 43106686a91f2b7606dc3e3f05355f29d0ba43aee8Christopher Wiley virtual ~Properties() {} 44106686a91f2b7606dc3e3f05355f29d0ba43aee8Christopher Wiley }; 45106686a91f2b7606dc3e3f05355f29d0ba43aee8Christopher Wiley 46f3d77e5f9fd79d43057d22e95d659cb2ff92e4b3Alex Vakulenko // Handles calls to org.chromium.Buffet.Manager.CheckDeviceRegistered(). 47f3d77e5f9fd79d43057d22e95d659cb2ff92e4b3Alex Vakulenko scoped_ptr<dbus::Response> HandleCheckDeviceRegistered( 48f3d77e5f9fd79d43057d22e95d659cb2ff92e4b3Alex Vakulenko dbus::MethodCall* method_call); 49f3d77e5f9fd79d43057d22e95d659cb2ff92e4b3Alex Vakulenko // Handles calls to org.chromium.Buffet.Manager.GetDeviceInfo(). 50f3d77e5f9fd79d43057d22e95d659cb2ff92e4b3Alex Vakulenko scoped_ptr<dbus::Response> HandleGetDeviceInfo( 51f3d77e5f9fd79d43057d22e95d659cb2ff92e4b3Alex Vakulenko dbus::MethodCall* method_call); 52f3d77e5f9fd79d43057d22e95d659cb2ff92e4b3Alex Vakulenko // Handles calls to org.chromium.Buffet.Manager.StartRegisterDevice(). 53f3d77e5f9fd79d43057d22e95d659cb2ff92e4b3Alex Vakulenko scoped_ptr<dbus::Response> HandleStartRegisterDevice( 54f3d77e5f9fd79d43057d22e95d659cb2ff92e4b3Alex Vakulenko dbus::MethodCall* method_call); 55f3d77e5f9fd79d43057d22e95d659cb2ff92e4b3Alex Vakulenko // Handles calls to org.chromium.Buffet.Manager.FinishRegisterDevice(). 56f3d77e5f9fd79d43057d22e95d659cb2ff92e4b3Alex Vakulenko scoped_ptr<dbus::Response> HandleFinishRegisterDevice( 574b5f04c56a2f13b4ec178ce430ea57ddadf1225fChristopher Wiley dbus::MethodCall* method_call); 584b5f04c56a2f13b4ec178ce430ea57ddadf1225fChristopher Wiley // Handles calls to org.chromium.Buffet.Manager.UpdateState(). 594b5f04c56a2f13b4ec178ce430ea57ddadf1225fChristopher Wiley scoped_ptr<dbus::Response> HandleUpdateState( 604b5f04c56a2f13b4ec178ce430ea57ddadf1225fChristopher Wiley dbus::MethodCall* method_call); 614b5f04c56a2f13b4ec178ce430ea57ddadf1225fChristopher Wiley 6254028f99aaa6917511102fc0572549a966257a8aChristopher Wiley dbus::Bus* bus_; 6354028f99aaa6917511102fc0572549a966257a8aChristopher Wiley dbus::ExportedObject* exported_object_; // weak; owned by the Bus object. 64106686a91f2b7606dc3e3f05355f29d0ba43aee8Christopher Wiley scoped_ptr<Properties> properties_; 654b5f04c56a2f13b4ec178ce430ea57ddadf1225fChristopher Wiley 66f3d77e5f9fd79d43057d22e95d659cb2ff92e4b3Alex Vakulenko DeviceRegistrationInfo device_info_; 67f3d77e5f9fd79d43057d22e95d659cb2ff92e4b3Alex Vakulenko 684b5f04c56a2f13b4ec178ce430ea57ddadf1225fChristopher Wiley DISALLOW_COPY_AND_ASSIGN(Manager); 694b5f04c56a2f13b4ec178ce430ea57ddadf1225fChristopher Wiley}; 704b5f04c56a2f13b4ec178ce430ea57ddadf1225fChristopher Wiley 714b5f04c56a2f13b4ec178ce430ea57ddadf1225fChristopher Wiley} // namespace buffet 724b5f04c56a2f13b4ec178ce430ea57ddadf1225fChristopher Wiley 734b5f04c56a2f13b4ec178ce430ea57ddadf1225fChristopher Wiley#endif // BUFFET_MANAGER_H_ 74