blob: bb47d52da82a774cd2655fa887db4fc430542e60 [file] [log] [blame]
// Copyright 2016 The ChromiumOS Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef BIOD_BIOMETRICS_DAEMON_H_
#define BIOD_BIOMETRICS_DAEMON_H_
#include <memory>
#include <vector>
#include <brillo/dbus/exported_object_manager.h>
#include <dbus/bus.h>
#include <libhwsec/factory/factory_impl.h>
#include "biod/auth_stack_manager_wrapper.h"
#include "biod/biod_metrics.h"
#include "biod/biometrics_manager_wrapper.h"
#include "biod/session_state_manager.h"
namespace biod {
class BiometricsDaemon {
public:
BiometricsDaemon();
BiometricsDaemon(const BiometricsDaemon&) = delete;
BiometricsDaemon& operator=(const BiometricsDaemon&) = delete;
private:
scoped_refptr<dbus::Bus> bus_;
// Raw pointer to BiodMetrics is passed to CrosFpDevice (owned by
// CrosFpBiometricsManager), CrosFpBiometricsManager (one of the
// biometrics managers) and SessionStateManager. This line must be placed
// above these object to ensure correct destruction order.
std::unique_ptr<BiodMetricsInterface> biod_metrics_;
std::unique_ptr<SessionStateManager> session_state_manager_;
std::unique_ptr<brillo::dbus_utils::ExportedObjectManager> object_manager_;
// BiometricsManagerWrappers and AuthStackManagers hold raw pointers to
// SessionStateManager and ExportedObjectManager so it must be placed after
// them to make sure that pointers remain valid (destruction order is
// correct).
std::vector<std::unique_ptr<BiometricsManagerWrapper>> biometrics_managers_;
std::vector<std::unique_ptr<AuthStackManagerWrapper>> auth_stack_managers_;
hwsec::FactoryImpl hwsec_factory_ =
hwsec::FactoryImpl(hwsec::ThreadingMode::kCurrentThread);
};
} // namespace biod
#endif // BIOD_BIOMETRICS_DAEMON_H_