// Copyright 2017 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 DEBUGD_SRC_HELPERS_SHILL_PROXY_H_
#define DEBUGD_SRC_HELPERS_SHILL_PROXY_H_

#include <memory>
#include <string>

#include <base/macros.h>
#include <base/memory/ref_counted.h>

#include "debugd/src/helpers/system_service_proxy.h"

namespace debugd {

// Implements a D-Bus proxy to interact with the shill system service.
// See SystemServiceProxy for typical usages.
class ShillProxy : public SystemServiceProxy {
 public:
  // Creates a D-Bus proxy for the shill system service and connects to the
  // system bus. Returns an instance after it successfully connects to the
  // system bus, or nullptr on error.
  static std::unique_ptr<ShillProxy> Create();

  ~ShillProxy() override = default;

  // Gets the properties associated with the interface named |interface_name|
  // of a D-Bus object identified by |object_path| through the GetProperties()
  // D-Bus method exposed by shill. The properties are expected to be a
  // dictionary. Returns nullptr on error.
  std::unique_ptr<base::DictionaryValue> GetProperties(
      const std::string& interface_name,
      const dbus::ObjectPath& object_path) override;

 private:
  explicit ShillProxy(scoped_refptr<dbus::Bus> bus);

  DISALLOW_COPY_AND_ASSIGN(ShillProxy);
};

}  // namespace debugd

#endif  // DEBUGD_SRC_HELPERS_SHILL_PROXY_H_
