// Copyright 2018 The Chromium OS 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 SHILL_DBUS_SUPPLICANT_BSS_PROXY_H_
#define SHILL_DBUS_SUPPLICANT_BSS_PROXY_H_

#include <memory>
#include <string>

#include <base/macros.h>

#include "shill/data_types.h"
#include "shill/refptr_types.h"
#include "shill/supplicant/supplicant_bss_proxy_interface.h"
#include "supplicant/dbus-proxies.h"

namespace shill {

class WiFiEndpoint;

class SupplicantBSSProxy : public SupplicantBSSProxyInterface {
 public:
  SupplicantBSSProxy(const scoped_refptr<dbus::Bus>& bus,
                     const RpcIdentifier& object_path,
                     WiFiEndpoint* wifi_endpoint);
  ~SupplicantBSSProxy() override;

 private:
  // Signal handlers.
  void PropertiesChanged(const brillo::VariantDictionary& properties);

  // Called when signal is connected to the ObjectProxy.
  void OnSignalConnected(const std::string& interface_name,
                         const std::string& signal_name,
                         bool success);

  std::unique_ptr<fi::w1::wpa_supplicant1::BSSProxy> bss_proxy_;
  // We use a bare pointer, because each SupplcantBSSProxy is
  // owned (using a unique_ptr) by a WiFiEndpoint. This means that if
  // |wifi_endpoint_| is invalid, then so is |this|.
  WiFiEndpoint* wifi_endpoint_;

  base::WeakPtrFactory<SupplicantBSSProxy> weak_factory_{this};
  DISALLOW_COPY_AND_ASSIGN(SupplicantBSSProxy);
};

}  // namespace shill

#endif  // SHILL_DBUS_SUPPLICANT_BSS_PROXY_H_
