| // Copyright 2016 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_ACCESS_API_HANDLER_H_ | |
| #define LIBWEAVE_SRC_ACCESS_API_HANDLER_H_ | |
| #include <memory> | |
| #include <base/memory/weak_ptr.h> | |
| #include <weave/error.h> | |
| namespace weave { | |
| class AccessBlackListManager; | |
| class Command; | |
| class Device; | |
| // Handles commands for 'accessControlBlackList' trait. | |
| // Objects of the class subscribe for notification from CommandManager and | |
| // execute incoming commands. | |
| // Handled commands: | |
| // accessControlBlackList.block | |
| // accessControlBlackList.unblock | |
| // accessControlBlackList.list | |
| class AccessApiHandler final { | |
| public: | |
| AccessApiHandler(Device* device, AccessBlackListManager* manager); | |
| private: | |
| void Block(const std::weak_ptr<Command>& command); | |
| void Unblock(const std::weak_ptr<Command>& command); | |
| void List(const std::weak_ptr<Command>& command); | |
| void UpdateState(); | |
| void OnCommandDone(const std::weak_ptr<Command>& command, ErrorPtr error); | |
| Device* device_{nullptr}; | |
| AccessBlackListManager* manager_{nullptr}; | |
| base::WeakPtrFactory<AccessApiHandler> weak_ptr_factory_{this}; | |
| DISALLOW_COPY_AND_ASSIGN(AccessApiHandler); | |
| }; | |
| } // namespace weave | |
| #endif // LIBWEAVE_SRC_ACCESS_API_HANDLER_H_ |