mirror of
				https://git.suyu.dev/suyu/suyu
				synced 2025-11-03 16:39:01 -06:00 
			
		
		
		
	Refactored profile manager sharing
This commit is contained in:
		@@ -197,17 +197,18 @@ void Module::Interface::GetBaasAccountManagerForApplication(Kernel::HLERequestCo
 | 
			
		||||
    LOG_DEBUG(Service_ACC, "called");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
Module::Interface::Interface(std::shared_ptr<Module> module, const char* name)
 | 
			
		||||
    : ServiceFramework(name), module(std::move(module)) {
 | 
			
		||||
    profile_manager = std::make_unique<ProfileManager>();
 | 
			
		||||
}
 | 
			
		||||
Module::Interface::Interface(std::shared_ptr<Module> module,
 | 
			
		||||
                             std::shared_ptr<ProfileManager> profile_manager, const char* name)
 | 
			
		||||
    : ServiceFramework(name), module(std::move(module)),
 | 
			
		||||
      profile_manager(std::make_shared<ProfileManager>(*profile_manager)) {}
 | 
			
		||||
 | 
			
		||||
void InstallInterfaces(SM::ServiceManager& service_manager) {
 | 
			
		||||
    auto module = std::make_shared<Module>();
 | 
			
		||||
    std::make_shared<ACC_AA>(module)->InstallAsService(service_manager);
 | 
			
		||||
    std::make_shared<ACC_SU>(module)->InstallAsService(service_manager);
 | 
			
		||||
    std::make_shared<ACC_U0>(module)->InstallAsService(service_manager);
 | 
			
		||||
    std::make_shared<ACC_U1>(module)->InstallAsService(service_manager);
 | 
			
		||||
    auto profile_manager = std::make_shared<ProfileManager>();
 | 
			
		||||
    std::make_shared<ACC_AA>(module, profile_manager)->InstallAsService(service_manager);
 | 
			
		||||
    std::make_shared<ACC_SU>(module, profile_manager)->InstallAsService(service_manager);
 | 
			
		||||
    std::make_shared<ACC_U0>(module, profile_manager)->InstallAsService(service_manager);
 | 
			
		||||
    std::make_shared<ACC_U1>(module, profile_manager)->InstallAsService(service_manager);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
} // namespace Service::Account
 | 
			
		||||
 
 | 
			
		||||
@@ -13,7 +13,8 @@ class Module final {
 | 
			
		||||
public:
 | 
			
		||||
    class Interface : public ServiceFramework<Interface> {
 | 
			
		||||
    public:
 | 
			
		||||
        explicit Interface(std::shared_ptr<Module> module, const char* name);
 | 
			
		||||
        explicit Interface(std::shared_ptr<Module> module,
 | 
			
		||||
                           std::shared_ptr<ProfileManager> profile_manager, const char* name);
 | 
			
		||||
 | 
			
		||||
        void GetUserCount(Kernel::HLERequestContext& ctx);
 | 
			
		||||
        void GetUserExistence(Kernel::HLERequestContext& ctx);
 | 
			
		||||
@@ -25,11 +26,9 @@ public:
 | 
			
		||||
        void GetBaasAccountManagerForApplication(Kernel::HLERequestContext& ctx);
 | 
			
		||||
        void IsUserRegistrationRequestPermitted(Kernel::HLERequestContext& ctx);
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        std::unique_ptr<ProfileManager> profile_manager{};
 | 
			
		||||
 | 
			
		||||
    protected:
 | 
			
		||||
        std::shared_ptr<Module> module;
 | 
			
		||||
        std::shared_ptr<ProfileManager> profile_manager;
 | 
			
		||||
    };
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,8 @@
 | 
			
		||||
 | 
			
		||||
namespace Service::Account {
 | 
			
		||||
 | 
			
		||||
ACC_AA::ACC_AA(std::shared_ptr<Module> module) : Module::Interface(std::move(module), "acc:aa") {
 | 
			
		||||
ACC_AA::ACC_AA(std::shared_ptr<Module> module, std::shared_ptr<ProfileManager> profile_manager)
 | 
			
		||||
    : Module::Interface(std::move(module), std::move(profile_manager), "acc:aa") {
 | 
			
		||||
    static const FunctionInfo functions[] = {
 | 
			
		||||
        {0, nullptr, "EnsureCacheAsync"},
 | 
			
		||||
        {1, nullptr, "LoadCache"},
 | 
			
		||||
 
 | 
			
		||||
@@ -10,7 +10,8 @@ namespace Service::Account {
 | 
			
		||||
 | 
			
		||||
class ACC_AA final : public Module::Interface {
 | 
			
		||||
public:
 | 
			
		||||
    explicit ACC_AA(std::shared_ptr<Module> module);
 | 
			
		||||
    explicit ACC_AA(std::shared_ptr<Module> module,
 | 
			
		||||
                    std::shared_ptr<ProfileManager> profile_manager);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
} // namespace Service::Account
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,8 @@
 | 
			
		||||
 | 
			
		||||
namespace Service::Account {
 | 
			
		||||
 | 
			
		||||
ACC_SU::ACC_SU(std::shared_ptr<Module> module) : Module::Interface(std::move(module), "acc:su") {
 | 
			
		||||
ACC_SU::ACC_SU(std::shared_ptr<Module> module, std::shared_ptr<ProfileManager> profile_manager)
 | 
			
		||||
    : Module::Interface(std::move(module), std::move(profile_manager), "acc:su") {
 | 
			
		||||
    static const FunctionInfo functions[] = {
 | 
			
		||||
        {0, &ACC_SU::GetUserCount, "GetUserCount"},
 | 
			
		||||
        {1, &ACC_SU::GetUserExistence, "GetUserExistence"},
 | 
			
		||||
 
 | 
			
		||||
@@ -11,7 +11,8 @@ namespace Account {
 | 
			
		||||
 | 
			
		||||
class ACC_SU final : public Module::Interface {
 | 
			
		||||
public:
 | 
			
		||||
    explicit ACC_SU(std::shared_ptr<Module> module);
 | 
			
		||||
    explicit ACC_SU(std::shared_ptr<Module> module,
 | 
			
		||||
                    std::shared_ptr<ProfileManager> profile_manager);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
} // namespace Account
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,8 @@
 | 
			
		||||
 | 
			
		||||
namespace Service::Account {
 | 
			
		||||
 | 
			
		||||
ACC_U0::ACC_U0(std::shared_ptr<Module> module) : Module::Interface(std::move(module), "acc:u0") {
 | 
			
		||||
ACC_U0::ACC_U0(std::shared_ptr<Module> module, std::shared_ptr<ProfileManager> profile_manager)
 | 
			
		||||
    : Module::Interface(std::move(module), std::move(profile_manager), "acc:u0") {
 | 
			
		||||
    static const FunctionInfo functions[] = {
 | 
			
		||||
        {0, &ACC_U0::GetUserCount, "GetUserCount"},
 | 
			
		||||
        {1, &ACC_U0::GetUserExistence, "GetUserExistence"},
 | 
			
		||||
 
 | 
			
		||||
@@ -10,7 +10,8 @@ namespace Service::Account {
 | 
			
		||||
 | 
			
		||||
class ACC_U0 final : public Module::Interface {
 | 
			
		||||
public:
 | 
			
		||||
    explicit ACC_U0(std::shared_ptr<Module> module);
 | 
			
		||||
    explicit ACC_U0(std::shared_ptr<Module> module,
 | 
			
		||||
                    std::shared_ptr<ProfileManager> profile_manager);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
} // namespace Service::Account
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,8 @@
 | 
			
		||||
 | 
			
		||||
namespace Service::Account {
 | 
			
		||||
 | 
			
		||||
ACC_U1::ACC_U1(std::shared_ptr<Module> module) : Module::Interface(std::move(module), "acc:u1") {
 | 
			
		||||
ACC_U1::ACC_U1(std::shared_ptr<Module> module, std::shared_ptr<ProfileManager> profile_manager)
 | 
			
		||||
    : Module::Interface(std::move(module), std::move(profile_manager), "acc:u1") {
 | 
			
		||||
    static const FunctionInfo functions[] = {
 | 
			
		||||
        {0, &ACC_U1::GetUserCount, "GetUserCount"},
 | 
			
		||||
        {1, &ACC_U1::GetUserExistence, "GetUserExistence"},
 | 
			
		||||
 
 | 
			
		||||
@@ -10,7 +10,8 @@ namespace Service::Account {
 | 
			
		||||
 | 
			
		||||
class ACC_U1 final : public Module::Interface {
 | 
			
		||||
public:
 | 
			
		||||
    explicit ACC_U1(std::shared_ptr<Module> module);
 | 
			
		||||
    explicit ACC_U1(std::shared_ptr<Module> module,
 | 
			
		||||
                    std::shared_ptr<ProfileManager> profile_manager);
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
} // namespace Service::Account
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user