| // 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 AccessRevocationManager; | 
 | class Command; | 
 | class Device; | 
 |  | 
 | // Handles commands for '_accessRevocationList' trait. | 
 | // Objects of the class subscribe for notification from CommandManager and | 
 | // execute incoming commands. | 
 | // Handled commands: | 
 | //  _accessRevocationList.revoke | 
 | //  _accessRevocationList.list | 
 | class AccessApiHandler final { | 
 |  public: | 
 |   AccessApiHandler(Device* device, AccessRevocationManager* manager); | 
 |  | 
 |  private: | 
 |   void Block(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}; | 
 |   AccessRevocationManager* manager_{nullptr}; | 
 |  | 
 |   base::WeakPtrFactory<AccessApiHandler> weak_ptr_factory_{this}; | 
 |   DISALLOW_COPY_AND_ASSIGN(AccessApiHandler); | 
 | }; | 
 |  | 
 | }  // namespace weave | 
 |  | 
 | #endif  // LIBWEAVE_SRC_ACCESS_API_HANDLER_H_ |