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; |
Vitaly Buka | 0fa51e5 | 2015-07-10 00:12:25 -0700 | [diff] [blame] | 15 | class CommandManager; |
| 16 | class DeviceRegistrationInfo; |
| 17 | class StateChangeQueue; |
| 18 | class StateManager; |
| 19 | |
| 20 | namespace privet { |
Vitaly Buka | 0fa51e5 | 2015-07-10 00:12:25 -0700 | [diff] [blame] | 21 | class Manager; |
| 22 | } // namespace privet |
| 23 | |
| 24 | class DeviceManager final : public Device { |
| 25 | public: |
Vitaly Buka | c5bdd17 | 2015-10-01 19:48:51 -0700 | [diff] [blame] | 26 | DeviceManager(provider::ConfigStore* config_store, |
| 27 | provider::TaskRunner* task_runner, |
| 28 | provider::HttpClient* http_client, |
| 29 | provider::Network* network, |
| 30 | provider::DnsServiceDiscovery* dns_sd, |
| 31 | provider::HttpServer* http_server, |
| 32 | provider::Wifi* wifi, |
| 33 | provider::Bluetooth* bluetooth); |
Vitaly Buka | 0fa51e5 | 2015-07-10 00:12:25 -0700 | [diff] [blame] | 34 | ~DeviceManager() override; |
| 35 | |
Vitaly Buka | ae6b35d | 2015-09-29 23:16:54 -0700 | [diff] [blame] | 36 | // Device implementation. |
Vitaly Buka | a8ece8f | 2015-10-05 13:30:23 -0700 | [diff] [blame] | 37 | const Settings& GetSettings() const override; |
Vitaly Buka | ae6b35d | 2015-09-29 23:16:54 -0700 | [diff] [blame] | 38 | void AddSettingsChangedCallback( |
| 39 | const SettingsChangedCallback& callback) override; |
Vitaly Buka | 3110deb | 2015-10-06 19:54:09 -0700 | [diff] [blame] | 40 | void AddCommandDefinitionsFromJson(const std::string& json) override; |
Vitaly Buka | 77c2bff | 2015-10-06 18:31:20 -0700 | [diff] [blame] | 41 | void AddCommandDefinitions(const base::DictionaryValue& dict) override; |
Vitaly Buka | a8ece8f | 2015-10-05 13:30:23 -0700 | [diff] [blame] | 42 | bool AddCommand(const base::DictionaryValue& command, |
| 43 | std::string* id, |
| 44 | ErrorPtr* error) override; |
| 45 | Command* FindCommand(const std::string& id) override; |
Vitaly Buka | 695a5fb | 2015-10-06 16:26:08 -0700 | [diff] [blame] | 46 | void AddCommandHandler(const std::string& command_name, |
| 47 | const CommandHandlerCallback& callback) override; |
Vitaly Buka | 4c98135 | 2015-10-01 23:04:24 -0700 | [diff] [blame] | 48 | void AddStateChangedCallback(const base::Closure& callback) override; |
Vitaly Buka | 3110deb | 2015-10-06 19:54:09 -0700 | [diff] [blame] | 49 | void AddStateDefinitionsFromJson(const std::string& json) override; |
Vitaly Buka | 77c2bff | 2015-10-06 18:31:20 -0700 | [diff] [blame] | 50 | void AddStateDefinitions(const base::DictionaryValue& dict) override; |
Vitaly Buka | 216e86d | 2015-10-06 20:23:02 -0700 | [diff] [blame] | 51 | bool SetStatePropertiesFromJson(const std::string& json, |
| 52 | ErrorPtr* error) override; |
| 53 | bool SetStateProperties(const base::DictionaryValue& dict, |
Vitaly Buka | 4c98135 | 2015-10-01 23:04:24 -0700 | [diff] [blame] | 54 | ErrorPtr* error) override; |
| 55 | std::unique_ptr<base::Value> GetStateProperty( |
| 56 | const std::string& name) const override; |
| 57 | bool SetStateProperty(const std::string& name, |
| 58 | const base::Value& value, |
| 59 | ErrorPtr* error) override; |
| 60 | std::unique_ptr<base::DictionaryValue> GetState() const override; |
Vitaly Buka | 12870bd | 2015-10-08 23:49:39 -0700 | [diff] [blame] | 61 | void Register(const std::string& ticket_id, |
Vitaly Buka | 7476342 | 2015-10-11 00:39:52 -0700 | [diff] [blame] | 62 | const DoneCallback& callback) override; |
Vitaly Buka | c3c6dab | 2015-10-01 19:41:02 -0700 | [diff] [blame] | 63 | GcdState GetGcdState() const override; |
| 64 | void AddGcdStateChangedCallback( |
| 65 | const GcdStateChangedCallback& callback) override; |
Vitaly Buka | e607361 | 2015-10-01 17:58:52 -0700 | [diff] [blame] | 66 | void AddPairingChangedCallbacks( |
| 67 | const PairingBeginCallback& begin_callback, |
| 68 | const PairingEndCallback& end_callback) override; |
Vitaly Buka | 0fa51e5 | 2015-07-10 00:12:25 -0700 | [diff] [blame] | 69 | |
Vitaly Buka | c11a17d | 2015-08-15 10:36:10 -0700 | [diff] [blame] | 70 | Config* GetConfig(); |
| 71 | |
Vitaly Buka | 0fa51e5 | 2015-07-10 00:12:25 -0700 | [diff] [blame] | 72 | private: |
Vitaly Buka | 41a90d6 | 2015-09-29 16:58:39 -0700 | [diff] [blame] | 73 | void StartPrivet(provider::TaskRunner* task_runner, |
Vitaly Buka | 1e36367 | 2015-09-25 14:01:16 -0700 | [diff] [blame] | 74 | provider::Network* network, |
| 75 | provider::DnsServiceDiscovery* dns_sd, |
| 76 | provider::HttpServer* http_server, |
| 77 | provider::Wifi* wifi, |
| 78 | provider::Bluetooth* bluetooth); |
Vitaly Buka | 0fa51e5 | 2015-07-10 00:12:25 -0700 | [diff] [blame] | 79 | |
Vitaly Buka | 0fa51e5 | 2015-07-10 00:12:25 -0700 | [diff] [blame] | 80 | std::shared_ptr<CommandManager> command_manager_; |
| 81 | std::unique_ptr<StateChangeQueue> state_change_queue_; |
| 82 | std::shared_ptr<StateManager> state_manager_; |
| 83 | std::unique_ptr<DeviceRegistrationInfo> device_info_; |
| 84 | std::unique_ptr<BaseApiHandler> base_api_handler_; |
Vitaly Buka | 0fa51e5 | 2015-07-10 00:12:25 -0700 | [diff] [blame] | 85 | std::unique_ptr<privet::Manager> privet_; |
| 86 | |
| 87 | base::WeakPtrFactory<DeviceManager> weak_ptr_factory_{this}; |
| 88 | DISALLOW_COPY_AND_ASSIGN(DeviceManager); |
| 89 | }; |
| 90 | |
| 91 | } // namespace weave |
| 92 | |
| 93 | #endif // LIBWEAVE_SRC_DEVICE_MANAGER_H_ |