Vitaly Buka | 4615e0d | 2015-10-14 15:35:12 -0700 | [diff] [blame] | 1 | // Copyright 2015 The Weave Authors. All rights reserved. |
Vitaly Buka | 0fa51e5 | 2015-07-10 00:12:25 -0700 | [diff] [blame] | 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 LIBWEAVE_SRC_DEVICE_MANAGER_H_ |
| 6 | #define LIBWEAVE_SRC_DEVICE_MANAGER_H_ |
| 7 | |
Vitaly Buka | 8b4ab96 | 2015-07-14 19:19:39 -0700 | [diff] [blame] | 8 | #include <base/memory/weak_ptr.h> |
Vitaly Buka | 7b382ac | 2015-08-03 13:50:01 -0700 | [diff] [blame] | 9 | #include <weave/device.h> |
Vitaly Buka | 0fa51e5 | 2015-07-10 00:12:25 -0700 | [diff] [blame] | 10 | |
Vitaly Buka | 0fa51e5 | 2015-07-10 00:12:25 -0700 | [diff] [blame] | 11 | namespace weave { |
| 12 | |
| 13 | class BaseApiHandler; |
Vitaly Buka | c11a17d | 2015-08-15 10:36:10 -0700 | [diff] [blame] | 14 | class Config; |
Alex Vakulenko | e79fa91 | 2015-12-04 17:24:15 -0800 | [diff] [blame] | 15 | class ComponentManager; |
Vitaly Buka | 0fa51e5 | 2015-07-10 00:12:25 -0700 | [diff] [blame] | 16 | class DeviceRegistrationInfo; |
Vitaly Buka | 0fa51e5 | 2015-07-10 00:12:25 -0700 | [diff] [blame] | 17 | |
| 18 | namespace privet { |
Vitaly Buka | 3d851b4 | 2015-12-08 16:17:01 -0800 | [diff] [blame^] | 19 | class AuthManager; |
Vitaly Buka | 0fa51e5 | 2015-07-10 00:12:25 -0700 | [diff] [blame] | 20 | class Manager; |
| 21 | } // namespace privet |
| 22 | |
| 23 | class DeviceManager final : public Device { |
| 24 | public: |
Vitaly Buka | c5bdd17 | 2015-10-01 19:48:51 -0700 | [diff] [blame] | 25 | DeviceManager(provider::ConfigStore* config_store, |
| 26 | provider::TaskRunner* task_runner, |
| 27 | provider::HttpClient* http_client, |
| 28 | provider::Network* network, |
| 29 | provider::DnsServiceDiscovery* dns_sd, |
| 30 | provider::HttpServer* http_server, |
| 31 | provider::Wifi* wifi, |
| 32 | provider::Bluetooth* bluetooth); |
Vitaly Buka | 0fa51e5 | 2015-07-10 00:12:25 -0700 | [diff] [blame] | 33 | ~DeviceManager() override; |
| 34 | |
Vitaly Buka | ae6b35d | 2015-09-29 23:16:54 -0700 | [diff] [blame] | 35 | // Device implementation. |
Vitaly Buka | a8ece8f | 2015-10-05 13:30:23 -0700 | [diff] [blame] | 36 | const Settings& GetSettings() const override; |
Vitaly Buka | ae6b35d | 2015-09-29 23:16:54 -0700 | [diff] [blame] | 37 | void AddSettingsChangedCallback( |
| 38 | const SettingsChangedCallback& callback) override; |
Alex Vakulenko | e79fa91 | 2015-12-04 17:24:15 -0800 | [diff] [blame] | 39 | void AddTraitDefinitionsFromJson(const std::string& json) override; |
| 40 | void AddTraitDefinitions(const base::DictionaryValue& dict) override; |
| 41 | const base::DictionaryValue& GetTraits() const override; |
| 42 | bool AddComponent(const std::string& name, |
| 43 | const std::vector<std::string>& traits, |
| 44 | ErrorPtr* error) override; |
| 45 | void AddComponentTreeChangedCallback(const base::Closure& callback) override; |
| 46 | const base::DictionaryValue& GetComponents() const override; |
| 47 | bool SetStatePropertiesFromJson(const std::string& component, |
| 48 | const std::string& json, |
| 49 | ErrorPtr* error) override; |
| 50 | bool SetStateProperties(const std::string& component, |
| 51 | const base::DictionaryValue& dict, |
| 52 | ErrorPtr* error) override; |
| 53 | const base::Value* GetStateProperty(const std::string& component, |
| 54 | const std::string& name, |
| 55 | ErrorPtr* error) const override; |
| 56 | bool SetStateProperty(const std::string& component, |
| 57 | const std::string& name, |
| 58 | const base::Value& value, |
| 59 | ErrorPtr* error) override; |
| 60 | void AddCommandHandler(const std::string& component, |
| 61 | const std::string& command_name, |
| 62 | const CommandHandlerCallback& callback) override; |
Vitaly Buka | a8ece8f | 2015-10-05 13:30:23 -0700 | [diff] [blame] | 63 | bool AddCommand(const base::DictionaryValue& command, |
| 64 | std::string* id, |
| 65 | ErrorPtr* error) override; |
| 66 | Command* FindCommand(const std::string& id) override; |
Alex Vakulenko | e79fa91 | 2015-12-04 17:24:15 -0800 | [diff] [blame] | 67 | void AddStateChangedCallback(const base::Closure& callback) override; |
| 68 | void Register(const std::string& ticket_id, |
| 69 | const DoneCallback& callback) override; |
| 70 | GcdState GetGcdState() const override; |
| 71 | void AddGcdStateChangedCallback( |
| 72 | const GcdStateChangedCallback& callback) override; |
| 73 | void AddPairingChangedCallbacks( |
| 74 | const PairingBeginCallback& begin_callback, |
| 75 | const PairingEndCallback& end_callback) override; |
| 76 | |
| 77 | void AddCommandDefinitionsFromJson(const std::string& json) override; |
| 78 | void AddCommandDefinitions(const base::DictionaryValue& dict) override; |
Vitaly Buka | 695a5fb | 2015-10-06 16:26:08 -0700 | [diff] [blame] | 79 | void AddCommandHandler(const std::string& command_name, |
| 80 | const CommandHandlerCallback& callback) override; |
Vitaly Buka | 3110deb | 2015-10-06 19:54:09 -0700 | [diff] [blame] | 81 | void AddStateDefinitionsFromJson(const std::string& json) override; |
Vitaly Buka | 77c2bff | 2015-10-06 18:31:20 -0700 | [diff] [blame] | 82 | void AddStateDefinitions(const base::DictionaryValue& dict) override; |
Vitaly Buka | 216e86d | 2015-10-06 20:23:02 -0700 | [diff] [blame] | 83 | bool SetStatePropertiesFromJson(const std::string& json, |
| 84 | ErrorPtr* error) override; |
| 85 | bool SetStateProperties(const base::DictionaryValue& dict, |
Vitaly Buka | 4c98135 | 2015-10-01 23:04:24 -0700 | [diff] [blame] | 86 | ErrorPtr* error) override; |
Vitaly Buka | c430560 | 2015-11-24 23:33:09 -0800 | [diff] [blame] | 87 | const base::Value* GetStateProperty(const std::string& name) const override; |
Vitaly Buka | 4c98135 | 2015-10-01 23:04:24 -0700 | [diff] [blame] | 88 | bool SetStateProperty(const std::string& name, |
| 89 | const base::Value& value, |
| 90 | ErrorPtr* error) override; |
Vitaly Buka | c430560 | 2015-11-24 23:33:09 -0800 | [diff] [blame] | 91 | const base::DictionaryValue& GetState() const override; |
Vitaly Buka | 0fa51e5 | 2015-07-10 00:12:25 -0700 | [diff] [blame] | 92 | |
Vitaly Buka | c11a17d | 2015-08-15 10:36:10 -0700 | [diff] [blame] | 93 | Config* GetConfig(); |
| 94 | |
Vitaly Buka | 0fa51e5 | 2015-07-10 00:12:25 -0700 | [diff] [blame] | 95 | private: |
Vitaly Buka | 41a90d6 | 2015-09-29 16:58:39 -0700 | [diff] [blame] | 96 | void StartPrivet(provider::TaskRunner* task_runner, |
Vitaly Buka | 1e36367 | 2015-09-25 14:01:16 -0700 | [diff] [blame] | 97 | provider::Network* network, |
| 98 | provider::DnsServiceDiscovery* dns_sd, |
| 99 | provider::HttpServer* http_server, |
| 100 | provider::Wifi* wifi, |
| 101 | provider::Bluetooth* bluetooth); |
Vitaly Buka | 0fa51e5 | 2015-07-10 00:12:25 -0700 | [diff] [blame] | 102 | |
Vitaly Buka | 3d851b4 | 2015-12-08 16:17:01 -0800 | [diff] [blame^] | 103 | std::unique_ptr<privet::AuthManager> auth_manager_; |
Alex Vakulenko | e79fa91 | 2015-12-04 17:24:15 -0800 | [diff] [blame] | 104 | std::unique_ptr<ComponentManager> component_manager_; |
Vitaly Buka | 0fa51e5 | 2015-07-10 00:12:25 -0700 | [diff] [blame] | 105 | std::unique_ptr<DeviceRegistrationInfo> device_info_; |
| 106 | std::unique_ptr<BaseApiHandler> base_api_handler_; |
Vitaly Buka | 0fa51e5 | 2015-07-10 00:12:25 -0700 | [diff] [blame] | 107 | std::unique_ptr<privet::Manager> privet_; |
| 108 | |
| 109 | base::WeakPtrFactory<DeviceManager> weak_ptr_factory_{this}; |
| 110 | DISALLOW_COPY_AND_ASSIGN(DeviceManager); |
| 111 | }; |
| 112 | |
| 113 | } // namespace weave |
| 114 | |
| 115 | #endif // LIBWEAVE_SRC_DEVICE_MANAGER_H_ |