// 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 DLCSERVICE_DAEMON_H_
#define DLCSERVICE_DAEMON_H_

#include <memory>
#include <string>

#include <base/cancelable_callback.h>
#include <brillo/daemons/dbus_daemon.h>
#include <brillo/dbus/dbus_connection.h>

#include "dlcservice/dlc_service_dbus_adaptor.h"

namespace dlcservice {

// |Daemon| is a D-Bus service daemon.
class Daemon : public brillo::DBusServiceDaemon {
 public:
  Daemon();
  ~Daemon() override = default;

 private:
  // |brillo::Daemon| overrides:
  int OnInit() override;
  void RegisterDBusObjectsAsync(
      brillo::dbus_utils::AsyncEventSequencer* sequencer) override;

  std::unique_ptr<brillo::dbus_utils::DBusObject> dbus_object_;
  std::unique_ptr<dlcservice::DlcServiceDBusAdaptor> dbus_adaptor_;
  // TODO(crbug/965232): Use a separate bus (D-Bus connection) for proxies to
  // avoid missing signal messages.
  scoped_refptr<dbus::Bus> bus_for_proxies_;
  brillo::DBusConnection dbus_connection_for_proxies_;

  DISALLOW_COPY_AND_ASSIGN(Daemon);
};

}  // namespace dlcservice

#endif  // DLCSERVICE_DAEMON_H_
