blob: 59da1ec840b7bf93b6251aa5e78058a8289b79eb [file] [log] [blame]
// Copyright 2023 The ChromiumOS Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CRYPTOHOME_SIGNALLING_H_
#define CRYPTOHOME_SIGNALLING_H_
#include <cryptohome/proto_bindings/UserDataAuth.pb.h>
namespace cryptohome {
// Defines a standard interface for sending D-Bus signals.
class SignallingInterface {
public:
SignallingInterface() = default;
virtual ~SignallingInterface() = default;
// Send the given signal. All of these functions work the same way: calling
// "SendXxx" will send the UserDataAuth D-Bus signal named "Xxx".
virtual void SendAuthFactorStatusUpdate(
const user_data_auth::AuthFactorStatusUpdate& signal) = 0;
virtual void SendLowDiskSpace(const user_data_auth::LowDiskSpace& signal) = 0;
virtual void SendAuthScanResult(
const user_data_auth::AuthScanResult& signal) = 0;
virtual void SendPrepareAuthFactorProgress(
const user_data_auth::PrepareAuthFactorProgress& signal) = 0;
virtual void SendAuthenticateStarted(
const user_data_auth::AuthenticateStarted& signal) = 0;
virtual void SendAuthenticateAuthFactorCompleted(
const user_data_auth::AuthenticateAuthFactorCompleted& signal) = 0;
virtual void SendMountStarted(const user_data_auth::MountStarted& signal) = 0;
virtual void SendMountCompleted(
const user_data_auth::MountCompleted& signal) = 0;
virtual void SendAuthFactorAdded(
const user_data_auth::AuthFactorAdded& signal) = 0;
virtual void SendAuthFactorRemoved(
const user_data_auth::AuthFactorRemoved& signal) = 0;
virtual void SendAuthFactorUpdated(
const user_data_auth::AuthFactorUpdated& signal) = 0;
virtual void SendAuthSessionExpiring(
const user_data_auth::AuthSessionExpiring& signal) = 0;
virtual void SendEvictedKeyRestored(
const user_data_auth::EvictedKeyRestored& signal) = 0;
};
// Null implementation of the signalling interface that considers every signal
// to be a no-op. Useful as a default handler in cases where the real D-Bus
// version is not yet available.
class NullSignalling : public SignallingInterface {
public:
NullSignalling() = default;
NullSignalling(const NullSignalling&) = delete;
NullSignalling& operator=(const NullSignalling&) = delete;
private:
void SendAuthFactorStatusUpdate(
const user_data_auth::AuthFactorStatusUpdate& signal) override {}
void SendLowDiskSpace(const user_data_auth::LowDiskSpace& signal) override {}
void SendAuthScanResult(
const user_data_auth::AuthScanResult& signal) override {}
void SendPrepareAuthFactorProgress(
const user_data_auth::PrepareAuthFactorProgress& signal) override {}
void SendAuthenticateStarted(
const user_data_auth::AuthenticateStarted& signal) override {}
void SendAuthenticateAuthFactorCompleted(
const user_data_auth::AuthenticateAuthFactorCompleted& signal) override {}
void SendMountStarted(const user_data_auth::MountStarted& signal) override {}
void SendMountCompleted(
const user_data_auth::MountCompleted& signal) override {}
void SendAuthFactorAdded(
const user_data_auth::AuthFactorAdded& signal) override {}
void SendAuthFactorRemoved(
const user_data_auth::AuthFactorRemoved& signal) override {}
void SendAuthFactorUpdated(
const user_data_auth::AuthFactorUpdated& signal) override {}
void SendAuthSessionExpiring(
const user_data_auth::AuthSessionExpiring& signal) override {}
void SendEvictedKeyRestored(
const user_data_auth::EvictedKeyRestored& signal) override {}
};
} // namespace cryptohome
#endif // CRYPTOHOME_SIGNALLING_H_