| // 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_BASE_API_HANDLER_H_ | 
 | #define LIBWEAVE_SRC_BASE_API_HANDLER_H_ | 
 |  | 
 | #include <memory> | 
 | #include <string> | 
 |  | 
 | #include <base/memory/weak_ptr.h> | 
 |  | 
 | namespace weave { | 
 |  | 
 | class Command; | 
 | class Device; | 
 | class DeviceRegistrationInfo; | 
 | struct Settings; | 
 |  | 
 | // Handles commands from 'base' package. | 
 | // Objects of the class subscribe for notification from CommandManager and | 
 | // execute incoming commands. | 
 | // Handled commands: | 
 | //  base.updateDeviceInfo | 
 | //  base.updateBaseConfiguration | 
 | class BaseApiHandler final { | 
 |  public: | 
 |   BaseApiHandler(DeviceRegistrationInfo* device_info, Device* device); | 
 |  | 
 |  private: | 
 |   void UpdateBaseConfiguration(const std::weak_ptr<Command>& command); | 
 |   void UpdateDeviceInfo(const std::weak_ptr<Command>& command); | 
 |   bool UpdateState(const std::string& anonymous_access_role, | 
 |                    bool discovery_enabled, | 
 |                    bool pairing_enabled); | 
 |   void OnConfigChanged(const Settings& settings); | 
 |  | 
 |   DeviceRegistrationInfo* device_info_; | 
 |   Device* device_; | 
 |  | 
 |   base::WeakPtrFactory<BaseApiHandler> weak_ptr_factory_{this}; | 
 |   DISALLOW_COPY_AND_ASSIGN(BaseApiHandler); | 
 | }; | 
 |  | 
 | }  // namespace weave | 
 |  | 
 | #endif  // LIBWEAVE_SRC_BASE_API_HANDLER_H_ |