blob: de294e78b992591d6b5d9d39bd1231a971979244 [file] [log] [blame]
// Copyright 2015 The Chromium OS 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 <base/memory/weak_ptr.h>
#include <weave/device.h>
namespace weave {
class BaseApiHandler;
class Config;
class CommandManager;
class DeviceRegistrationInfo;
class StateChangeQueue;
class StateManager;
namespace privet {
class Manager;
} // namespace privet
class DeviceManager final : public Device {
public:
DeviceManager();
~DeviceManager() override;
// Device implementation.
void Start(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) override;
const Settings& GetSettings() override;
void AddSettingsChangedCallback(
const SettingsChangedCallback& callback) override;
Commands* GetCommands() override;
State* GetState() override;
Cloud* GetCloud() override;
Privet* GetPrivet() override;
Config* GetConfig();
private:
void StartPrivet(provider::TaskRunner* task_runner,
provider::Network* network,
provider::DnsServiceDiscovery* dns_sd,
provider::HttpServer* http_server,
provider::Wifi* wifi,
provider::Bluetooth* bluetooth);
std::shared_ptr<CommandManager> command_manager_;
std::unique_ptr<StateChangeQueue> state_change_queue_;
std::shared_ptr<StateManager> state_manager_;
std::unique_ptr<DeviceRegistrationInfo> device_info_;
std::unique_ptr<BaseApiHandler> base_api_handler_;
std::unique_ptr<privet::Manager> privet_;
base::WeakPtrFactory<DeviceManager> weak_ptr_factory_{this};
DISALLOW_COPY_AND_ASSIGN(DeviceManager);
};
} // namespace weave
#endif // LIBWEAVE_SRC_DEVICE_MANAGER_H_