// Copyright 2015 The Weave Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef LIBWEAVE_SRC_DEVICE_MANAGER_H_ #define LIBWEAVE_SRC_DEVICE_MANAGER_H_ #include #include namespace weave { class AccessApiHandler; class AccessRevocationManager; class BaseApiHandler; class Config; class ComponentManager; class DeviceRegistrationInfo; namespace privet { class AuthManager; class Manager; } // namespace privet class DeviceManager final : public Device { public: DeviceManager(provider::ConfigStore* config_store, provider::TaskRunner* task_runner, provider::HttpClient* http_client, provider::Network* network, provider::DnsServiceDiscovery* dns_sd, provider::HttpServer* http_server, provider::Wifi* wifi, provider::Bluetooth* bluetooth); ~DeviceManager() override; // Device implementation. const Settings& GetSettings() const override; void AddSettingsChangedCallback( const SettingsChangedCallback& callback) override; void AddTraitDefinitionsFromJson(const std::string& json) override; void AddTraitDefinitions(const base::DictionaryValue& dict) override; const base::DictionaryValue& GetTraits() const override; void AddTraitDefsChangedCallback(const base::Closure& callback) override; bool AddComponent(const std::string& name, const std::vector& traits, ErrorPtr* error) override; bool RemoveComponent(const std::string& name, ErrorPtr* error) override; void AddComponentTreeChangedCallback(const base::Closure& callback) override; const base::DictionaryValue& GetComponents() const override; bool SetStatePropertiesFromJson(const std::string& component, const std::string& json, ErrorPtr* error) override; bool SetStateProperties(const std::string& component, const base::DictionaryValue& dict, ErrorPtr* error) override; const base::Value* GetStateProperty(const std::string& component, const std::string& name, ErrorPtr* error) const override; bool SetStateProperty(const std::string& component, const std::string& name, const base::Value& value, ErrorPtr* error) override; void AddCommandHandler(const std::string& component, const std::string& command_name, const CommandHandlerCallback& callback) override; bool AddCommand(const base::DictionaryValue& command, std::string* id, ErrorPtr* error) override; Command* FindCommand(const std::string& id) override; void AddStateChangedCallback(const base::Closure& callback) override; void Register(const RegistrationData& registration_data, const DoneCallback& callback) override; GcdState GetGcdState() const override; void AddGcdStateChangedCallback( const GcdStateChangedCallback& callback) override; void AddPairingChangedCallbacks( const PairingBeginCallback& begin_callback, const PairingEndCallback& end_callback) override; Config* GetConfig(); private: void StartPrivet(); void StopPrivet(); void OnSettingsChanged(const Settings& settings); provider::TaskRunner* task_runner_{nullptr}; provider::Network* network_{nullptr}; provider::DnsServiceDiscovery* dns_sd_{nullptr}; provider::HttpServer* http_server_{nullptr}; provider::Wifi* wifi_{nullptr}; std::unique_ptr config_; std::unique_ptr auth_manager_; std::unique_ptr component_manager_; std::unique_ptr device_info_; std::unique_ptr base_api_handler_; std::unique_ptr access_revocation_manager_; std::unique_ptr access_api_handler_; std::unique_ptr privet_; base::WeakPtrFactory weak_ptr_factory_{this}; DISALLOW_COPY_AND_ASSIGN(DeviceManager); }; } // namespace weave #endif // LIBWEAVE_SRC_DEVICE_MANAGER_H_