blob: 94fe768802b080b41ceb32f895e09e0536f7ccb0 [file] [log] [blame]
// Copyright 2019 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 "diagnostics/cros_healthd/cros_healthd_mojo_service.h"
#include <sys/types.h>
#include <utility>
#include <base/logging.h>
#include "diagnostics/cros_healthd/fetchers/process_fetcher.h"
#include "mojo/cros_healthd_probe.mojom.h"
namespace diagnostics {
namespace mojo_ipc = ::chromeos::cros_healthd::mojom;
CrosHealthdMojoService::CrosHealthdMojoService(
FetchAggregator* fetch_aggregator,
BluetoothEvents* bluetooth_events,
LidEvents* lid_events,
PowerEvents* power_events)
: fetch_aggregator_(fetch_aggregator),
bluetooth_events_(bluetooth_events),
lid_events_(lid_events),
power_events_(power_events) {
DCHECK(fetch_aggregator_);
DCHECK(bluetooth_events_);
DCHECK(lid_events_);
DCHECK(power_events_);
}
CrosHealthdMojoService::~CrosHealthdMojoService() = default;
void CrosHealthdMojoService::AddBluetoothObserver(
chromeos::cros_healthd::mojom::CrosHealthdBluetoothObserverPtr observer) {
bluetooth_events_->AddObserver(std::move(observer));
}
void CrosHealthdMojoService::AddLidObserver(
chromeos::cros_healthd::mojom::CrosHealthdLidObserverPtr observer) {
lid_events_->AddObserver(std::move(observer));
}
void CrosHealthdMojoService::AddPowerObserver(
chromeos::cros_healthd::mojom::CrosHealthdPowerObserverPtr observer) {
power_events_->AddObserver(std::move(observer));
}
void CrosHealthdMojoService::ProbeProcessInfo(
uint32_t process_id, ProbeProcessInfoCallback callback) {
ProcessFetcher(static_cast<pid_t>(process_id))
.FetchProcessInfo(std::move(callback));
}
void CrosHealthdMojoService::ProbeTelemetryInfo(
const std::vector<ProbeCategoryEnum>& categories,
ProbeTelemetryInfoCallback callback) {
return fetch_aggregator_->Run(categories, std::move(callback));
}
void CrosHealthdMojoService::AddProbeBinding(
chromeos::cros_healthd::mojom::CrosHealthdProbeServiceRequest request) {
probe_binding_set_.AddBinding(this /* impl */, std::move(request));
}
void CrosHealthdMojoService::AddEventBinding(
chromeos::cros_healthd::mojom::CrosHealthdEventServiceRequest request) {
event_binding_set_.AddBinding(this /* impl */, std::move(request));
}
} // namespace diagnostics