// 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_UPSTART_PROXY_H_
#define SHILL_DBUS_UPSTART_PROXY_H_

#include <memory>
#include <string>
#include <vector>

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

#include "shill/upstart/upstart_proxy_interface.h"
#include "upstart/dbus-proxies.h"

namespace shill {

class UpstartProxy : public UpstartProxyInterface {
 public:
  explicit UpstartProxy(const scoped_refptr<dbus::Bus>& bus);
  ~UpstartProxy() override = default;

  // Inherited from UpstartProxyInterface.
  void EmitEvent(const std::string& name,
                 const std::vector<std::string>& env,
                 bool wait) override;

 private:
  static const char kUpstartServiceName[];

  std::unique_ptr<com::ubuntu::Upstart0_6::JobProxy> shill_event_proxy_;

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

}  // namespace shill

#endif  // SHILL_DBUS_UPSTART_PROXY_H_
