Home | History | Annotate | Download | only in src
      1 // Copyright 2016 The Weave Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef LIBWEAVE_SRC_ACCESS_API_HANDLER_H_
      6 #define LIBWEAVE_SRC_ACCESS_API_HANDLER_H_
      7 
      8 #include <memory>
      9 
     10 #include <base/memory/weak_ptr.h>
     11 #include <weave/error.h>
     12 
     13 namespace weave {
     14 
     15 class AccessBlackListManager;
     16 class Command;
     17 class Device;
     18 
     19 // Handles commands for 'accessControlBlackList' trait.
     20 // Objects of the class subscribe for notification from CommandManager and
     21 // execute incoming commands.
     22 // Handled commands:
     23 //  accessControlBlackList.block
     24 //  accessControlBlackList.unblock
     25 //  accessControlBlackList.list
     26 class AccessApiHandler final {
     27  public:
     28   AccessApiHandler(Device* device, AccessBlackListManager* manager);
     29 
     30  private:
     31   void Block(const std::weak_ptr<Command>& command);
     32   void Unblock(const std::weak_ptr<Command>& command);
     33   void List(const std::weak_ptr<Command>& command);
     34   void UpdateState();
     35 
     36   void OnCommandDone(const std::weak_ptr<Command>& command, ErrorPtr error);
     37 
     38   Device* device_{nullptr};
     39   AccessBlackListManager* manager_{nullptr};
     40 
     41   base::WeakPtrFactory<AccessApiHandler> weak_ptr_factory_{this};
     42   DISALLOW_COPY_AND_ASSIGN(AccessApiHandler);
     43 };
     44 
     45 }  // namespace weave
     46 
     47 #endif  // LIBWEAVE_SRC_ACCESS_API_HANDLER_H_
     48