From 2c0b75a7448ab3878d159548858b397e1bcc305b Mon Sep 17 00:00:00 2001 From: Zach Hilman Date: Sun, 28 Apr 2019 18:46:46 -0400 Subject: [PATCH] bcat: Add backend class to generify the functions of BCAT Provides the most abstract simplified functions of BCAT as functions. Also includes a NullBackend class which is just a no-op. --- src/core/hle/service/bcat/backend/backend.cpp | 47 ++++++++++++++++ src/core/hle/service/bcat/backend/backend.h | 53 +++++++++++++++++++ 2 files changed, 100 insertions(+) create mode 100644 src/core/hle/service/bcat/backend/backend.cpp create mode 100644 src/core/hle/service/bcat/backend/backend.h diff --git a/src/core/hle/service/bcat/backend/backend.cpp b/src/core/hle/service/bcat/backend/backend.cpp new file mode 100644 index 000000000..aefa2208d --- /dev/null +++ b/src/core/hle/service/bcat/backend/backend.cpp @@ -0,0 +1,47 @@ +// Copyright 2019 yuzu emulator team +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#include "common/hex_util.h" +#include "common/logging/log.h" +#include "core/hle/service/bcat/backend/backend.h" + +namespace Service::BCAT { + +Backend::Backend(DirectoryGetter getter) : dir_getter(std::move(getter)) {} + +Backend::~Backend() = default; + +NullBackend::NullBackend(const DirectoryGetter& getter) : Backend(std::move(getter)) {} + +NullBackend::~NullBackend() = default; + +bool NullBackend::Synchronize(TitleIDVersion title, CompletionCallback callback) { + LOG_DEBUG(Service_BCAT, "called, title_id={:016X}, build_id={:016X}", title.title_id, + title.build_id); + + callback(true); + return true; +} + +bool NullBackend::SynchronizeDirectory(TitleIDVersion title, std::string name, + CompletionCallback callback) { + LOG_DEBUG(Service_BCAT, "called, title_id={:016X}, build_id={:016X}, name={}", title.title_id, + title.build_id, name); + + callback(true); + return true; +} + +bool NullBackend::Clear(u64 title_id) { + LOG_DEBUG(Service_BCAT, "called, title_id={:016X}"); + + return true; +} + +void NullBackend::SetPassphrase(u64 title_id, const Passphrase& passphrase) { + LOG_DEBUG(Service_BCAT, "called, title_id={:016X}, passphrase = {}", title_id, + Common::HexArrayToString(passphrase)); +} + +} // namespace Service::BCAT diff --git a/src/core/hle/service/bcat/backend/backend.h b/src/core/hle/service/bcat/backend/backend.h new file mode 100644 index 000000000..2e9511f3f --- /dev/null +++ b/src/core/hle/service/bcat/backend/backend.h @@ -0,0 +1,53 @@ +// Copyright 2019 yuzu emulator team +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#pragma once + +#include +#include "common/common_types.h" +#include "core/file_sys/vfs_types.h" + +namespace Service::BCAT { + +using CompletionCallback = std::function; +using DirectoryGetter = std::function; +using Passphrase = std::array; + +struct TitleIDVersion { + u64 title_id; + u64 build_id; +}; + +class Backend { +public: + explicit Backend(DirectoryGetter getter); + virtual ~Backend(); + + virtual bool Synchronize(TitleIDVersion title, CompletionCallback callback) = 0; + virtual bool SynchronizeDirectory(TitleIDVersion title, std::string name, + CompletionCallback callback) = 0; + + virtual bool Clear(u64 title_id) = 0; + + virtual void SetPassphrase(u64 title_id, const Passphrase& passphrase) = 0; + +protected: + DirectoryGetter dir_getter; +}; + +class NullBackend : public Backend { +public: + explicit NullBackend(const DirectoryGetter& getter); + ~NullBackend() override; + + bool Synchronize(TitleIDVersion title, CompletionCallback callback) override; + bool SynchronizeDirectory(TitleIDVersion title, std::string name, + CompletionCallback callback) override; + + bool Clear(u64 title_id) override; + + void SetPassphrase(u64 title_id, const Passphrase& passphrase) override; +}; + +} // namespace Service::BCAT