Home | History | Annotate | Download | only in src
      1 // Copyright 2015 The Weave Authors. All rights reserved.
      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 
      8 #include <base/memory/weak_ptr.h>
      9 #include <weave/device.h>
     10 
     11 namespace weave {
     12 
     13 class AccessApiHandler;
     14 class AccessBlackListManager;
     15 class BaseApiHandler;
     16 class Config;
     17 class ComponentManager;
     18 class DeviceRegistrationInfo;
     19 
     20 namespace privet {
     21 class AuthManager;
     22 class Manager;
     23 }  // namespace privet
     24 
     25 class DeviceManager final : public Device {
     26  public:
     27   DeviceManager(provider::ConfigStore* config_store,
     28                 provider::TaskRunner* task_runner,
     29                 provider::HttpClient* http_client,
     30                 provider::Network* network,
     31                 provider::DnsServiceDiscovery* dns_sd,
     32                 provider::HttpServer* http_server,
     33                 provider::Wifi* wifi,
     34                 provider::Bluetooth* bluetooth);
     35   ~DeviceManager() override;
     36 
     37   // Device implementation.
     38   const Settings& GetSettings() const override;
     39   void AddSettingsChangedCallback(
     40       const SettingsChangedCallback& callback) override;
     41   void AddTraitDefinitionsFromJson(const std::string& json) override;
     42   void AddTraitDefinitions(const base::DictionaryValue& dict) override;
     43   const base::DictionaryValue& GetTraits() const override;
     44   void AddTraitDefsChangedCallback(const base::Closure& callback) override;
     45   bool AddComponent(const std::string& name,
     46                     const std::vector<std::string>& traits,
     47                     ErrorPtr* error) override;
     48   bool RemoveComponent(const std::string& name, ErrorPtr* error) override;
     49   void AddComponentTreeChangedCallback(const base::Closure& callback) override;
     50   const base::DictionaryValue& GetComponents() const override;
     51   bool SetStatePropertiesFromJson(const std::string& component,
     52                                   const std::string& json,
     53                                   ErrorPtr* error) override;
     54   bool SetStateProperties(const std::string& component,
     55                           const base::DictionaryValue& dict,
     56                           ErrorPtr* error) override;
     57   const base::Value* GetStateProperty(const std::string& component,
     58                                       const std::string& name,
     59                                       ErrorPtr* error) const override;
     60   bool SetStateProperty(const std::string& component,
     61                         const std::string& name,
     62                         const base::Value& value,
     63                         ErrorPtr* error) override;
     64   void AddCommandHandler(const std::string& component,
     65                          const std::string& command_name,
     66                          const CommandHandlerCallback& callback) override;
     67   bool AddCommand(const base::DictionaryValue& command,
     68                   std::string* id,
     69                   ErrorPtr* error) override;
     70   Command* FindCommand(const std::string& id) override;
     71   void AddStateChangedCallback(const base::Closure& callback) override;
     72   void Register(const std::string& ticket_id,
     73                 const DoneCallback& callback) override;
     74   GcdState GetGcdState() const override;
     75   void AddGcdStateChangedCallback(
     76       const GcdStateChangedCallback& callback) override;
     77   void AddPairingChangedCallbacks(
     78       const PairingBeginCallback& begin_callback,
     79       const PairingEndCallback& end_callback) override;
     80 
     81   void AddCommandDefinitionsFromJson(const std::string& json) override;
     82   void AddCommandDefinitions(const base::DictionaryValue& dict) override;
     83   void AddCommandHandler(const std::string& command_name,
     84                          const CommandHandlerCallback& callback) override;
     85   void AddStateDefinitionsFromJson(const std::string& json) override;
     86   void AddStateDefinitions(const base::DictionaryValue& dict) override;
     87   bool SetStatePropertiesFromJson(const std::string& json,
     88                                   ErrorPtr* error) override;
     89   bool SetStateProperties(const base::DictionaryValue& dict,
     90                           ErrorPtr* error) override;
     91   const base::Value* GetStateProperty(const std::string& name) const override;
     92   bool SetStateProperty(const std::string& name,
     93                         const base::Value& value,
     94                         ErrorPtr* error) override;
     95   const base::DictionaryValue& GetState() const override;
     96 
     97   Config* GetConfig();
     98 
     99  private:
    100   void StartPrivet(provider::TaskRunner* task_runner,
    101                    provider::Network* network,
    102                    provider::DnsServiceDiscovery* dns_sd,
    103                    provider::HttpServer* http_server,
    104                    provider::Wifi* wifi,
    105                    provider::Bluetooth* bluetooth);
    106 
    107   std::unique_ptr<Config> config_;
    108   std::unique_ptr<privet::AuthManager> auth_manager_;
    109   std::unique_ptr<ComponentManager> component_manager_;
    110   std::unique_ptr<DeviceRegistrationInfo> device_info_;
    111   std::unique_ptr<BaseApiHandler> base_api_handler_;
    112   std::unique_ptr<AccessBlackListManager> black_list_manager_;
    113   std::unique_ptr<AccessApiHandler> access_api_handler_;
    114   std::unique_ptr<privet::Manager> privet_;
    115 
    116   base::WeakPtrFactory<DeviceManager> weak_ptr_factory_{this};
    117   DISALLOW_COPY_AND_ASSIGN(DeviceManager);
    118 };
    119 
    120 }  // namespace weave
    121 
    122 #endif  // LIBWEAVE_SRC_DEVICE_MANAGER_H_
    123