blob: 968355a1d71f0aa9d67e1830c56c6521c47da9f1 [file] [log] [blame]
// Copyright 2021 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.
#include "spaced/daemon.h"
#include <sysexits.h>
#include <memory>
#include <string>
#include <utility>
#include <base/bind.h>
#include <base/files/file_util.h>
#include <chromeos/dbus/service_constants.h>
#include <dbus/bus.h>
#include <dbus/spaced/dbus-constants.h>
#include "spaced/disk_usage_impl.h"
namespace spaced {
DBusAdaptor::DBusAdaptor(scoped_refptr<dbus::Bus> bus)
: org::chromium::SpacedAdaptor(this),
dbus_object_(
nullptr, bus, dbus::ObjectPath(::spaced::kSpacedServicePath)),
disk_usage_util_(std::make_unique<DiskUsageUtilImpl>()) {}
void DBusAdaptor::RegisterAsync(
const brillo::dbus_utils::AsyncEventSequencer::CompletionAction& cb) {
RegisterWithDBusObject(&dbus_object_);
dbus_object_.RegisterAsync(cb);
}
int64_t DBusAdaptor::GetFreeDiskSpace(const std::string& path) {
return disk_usage_util_->GetFreeDiskSpace(base::FilePath(path));
}
int64_t DBusAdaptor::GetTotalDiskSpace(const std::string& path) {
return disk_usage_util_->GetTotalDiskSpace(base::FilePath(path));
}
int64_t DBusAdaptor::GetRootDeviceSize() {
return disk_usage_util_->GetRootDeviceSize();
}
Daemon::Daemon() : DBusServiceDaemon(::spaced::kSpacedServiceName) {}
void Daemon::RegisterDBusObjectsAsync(
brillo::dbus_utils::AsyncEventSequencer* sequencer) {
adaptor_.reset(new DBusAdaptor(bus_));
adaptor_->RegisterAsync(
sequencer->GetHandler("RegisterAsync() failed", true));
}
} // namespace spaced