|  | // 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_PRIVET_PRIVET_MANAGER_H_ | 
|  | #define LIBWEAVE_SRC_PRIVET_PRIVET_MANAGER_H_ | 
|  |  | 
|  | #include <memory> | 
|  | #include <set> | 
|  | #include <string> | 
|  | #include <vector> | 
|  |  | 
|  | #include <base/memory/weak_ptr.h> | 
|  | #include <base/scoped_observer.h> | 
|  | #include <weave/device.h> | 
|  |  | 
|  | #include "src/privet/cloud_delegate.h" | 
|  | #include "src/privet/security_manager.h" | 
|  | #include "src/privet/wifi_bootstrap_manager.h" | 
|  |  | 
|  | namespace libwebserv { | 
|  | class ProtocolHandler; | 
|  | class Request; | 
|  | class Response; | 
|  | class Server; | 
|  | } | 
|  |  | 
|  | namespace weave { | 
|  |  | 
|  | class ComponentManager; | 
|  | class DeviceRegistrationInfo; | 
|  | class DnsServiceDiscovery; | 
|  | class Network; | 
|  |  | 
|  | namespace privet { | 
|  |  | 
|  | class CloudDelegate; | 
|  | class DaemonState; | 
|  | class DeviceDelegate; | 
|  | class PrivetHandler; | 
|  | class Publisher; | 
|  | class SecurityManager; | 
|  |  | 
|  | class Manager : public CloudDelegate::Observer { | 
|  | public: | 
|  | explicit Manager(provider::TaskRunner* task_runner); | 
|  | ~Manager() override; | 
|  |  | 
|  | void Start(provider::Network* network, | 
|  | provider::DnsServiceDiscovery* dns_sd, | 
|  | provider::HttpServer* http_server, | 
|  | provider::Wifi* wifi, | 
|  | AuthManager* auth_manager, | 
|  | DeviceRegistrationInfo* device, | 
|  | ComponentManager* component_manager); | 
|  |  | 
|  | std::string GetCurrentlyConnectedSsid() const; | 
|  |  | 
|  | void AddOnPairingChangedCallbacks( | 
|  | const Device::PairingBeginCallback& begin_callback, | 
|  | const Device::PairingEndCallback& end_callback); | 
|  |  | 
|  | private: | 
|  | // CloudDelegate::Observer | 
|  | void OnDeviceInfoChanged() override; | 
|  |  | 
|  | void PrivetRequestHandler( | 
|  | std::unique_ptr<provider::HttpServer::Request> request); | 
|  |  | 
|  | void PrivetRequestHandlerWithData( | 
|  | const std::shared_ptr<provider::HttpServer::Request>& request, | 
|  | const std::string& data); | 
|  |  | 
|  | void PrivetResponseHandler( | 
|  | const std::shared_ptr<provider::HttpServer::Request>& request, | 
|  | int status, | 
|  | const base::DictionaryValue& output); | 
|  |  | 
|  | void OnChanged(); | 
|  | void OnConnectivityChanged(); | 
|  |  | 
|  | bool disable_security_{false}; | 
|  | provider::TaskRunner* task_runner_{nullptr}; | 
|  | std::unique_ptr<CloudDelegate> cloud_; | 
|  | std::unique_ptr<DeviceDelegate> device_; | 
|  | std::unique_ptr<SecurityManager> security_; | 
|  | std::unique_ptr<WifiBootstrapManager> wifi_bootstrap_manager_; | 
|  | std::unique_ptr<Publisher> publisher_; | 
|  | std::unique_ptr<PrivetHandler> privet_handler_; | 
|  |  | 
|  | ScopedObserver<CloudDelegate, CloudDelegate::Observer> cloud_observer_{this}; | 
|  |  | 
|  | base::WeakPtrFactory<Manager> weak_ptr_factory_{this}; | 
|  | DISALLOW_COPY_AND_ASSIGN(Manager); | 
|  | }; | 
|  |  | 
|  | }  // namespace privet | 
|  | }  // namespace weave | 
|  |  | 
|  | #endif  // LIBWEAVE_SRC_PRIVET_PRIVET_MANAGER_H_ |