Parcourir la source

Service/NIFM: convert to module

mailwl il y a 8 ans
Parent
commit
ec030a542f

+ 52 - 32
src/core/hle/service/nifm/nifm.cpp

@@ -96,6 +96,48 @@ public:
     }
 };
 
+class IGeneralService final : public ServiceFramework<IGeneralService> {
+public:
+    IGeneralService();
+
+private:
+    void GetClientId(Kernel::HLERequestContext& ctx) {
+        LOG_WARNING(Service_NIFM, "(STUBBED) called");
+        IPC::ResponseBuilder rb{ctx, 4};
+        rb.Push(RESULT_SUCCESS);
+        rb.Push<u64>(0);
+    }
+    void CreateScanRequest(Kernel::HLERequestContext& ctx) {
+        IPC::ResponseBuilder rb{ctx, 2, 0, 1};
+
+        rb.Push(RESULT_SUCCESS);
+        rb.PushIpcInterface<IScanRequest>();
+
+        LOG_DEBUG(Service_NIFM, "called");
+    }
+    void CreateRequest(Kernel::HLERequestContext& ctx) {
+        IPC::ResponseBuilder rb{ctx, 2, 0, 1};
+
+        rb.Push(RESULT_SUCCESS);
+        rb.PushIpcInterface<IRequest>();
+
+        LOG_DEBUG(Service_NIFM, "called");
+    }
+    void RemoveNetworkProfile(Kernel::HLERequestContext& ctx) {
+        LOG_WARNING(Service_NIFM, "(STUBBED) called");
+        IPC::ResponseBuilder rb{ctx, 2};
+        rb.Push(RESULT_SUCCESS);
+    }
+    void CreateTemporaryNetworkProfile(Kernel::HLERequestContext& ctx) {
+        IPC::ResponseBuilder rb{ctx, 2, 0, 1};
+
+        rb.Push(RESULT_SUCCESS);
+        rb.PushIpcInterface<INetworkProfile>();
+
+        LOG_DEBUG(Service_NIFM, "called");
+    }
+};
+
 IGeneralService::IGeneralService() : ServiceFramework("IGeneralService") {
     static const FunctionInfo functions[] = {
         {1, &IGeneralService::GetClientId, "GetClientId"},
@@ -137,50 +179,28 @@ IGeneralService::IGeneralService() : ServiceFramework("IGeneralService") {
     RegisterHandlers(functions);
 }
 
-void IGeneralService::GetClientId(Kernel::HLERequestContext& ctx) {
-    LOG_WARNING(Service_NIFM, "(STUBBED) called");
-    IPC::ResponseBuilder rb{ctx, 4};
-    rb.Push(RESULT_SUCCESS);
-    rb.Push<u64>(0);
-}
-
-void IGeneralService::CreateScanRequest(Kernel::HLERequestContext& ctx) {
+void Module::Interface::CreateGeneralServiceOld(Kernel::HLERequestContext& ctx) {
     IPC::ResponseBuilder rb{ctx, 2, 0, 1};
-
     rb.Push(RESULT_SUCCESS);
-    rb.PushIpcInterface<IScanRequest>();
-
+    rb.PushIpcInterface<IGeneralService>();
     LOG_DEBUG(Service_NIFM, "called");
 }
 
-void IGeneralService::CreateRequest(Kernel::HLERequestContext& ctx) {
+void Module::Interface::CreateGeneralService(Kernel::HLERequestContext& ctx) {
     IPC::ResponseBuilder rb{ctx, 2, 0, 1};
-
     rb.Push(RESULT_SUCCESS);
-    rb.PushIpcInterface<IRequest>();
-
+    rb.PushIpcInterface<IGeneralService>();
     LOG_DEBUG(Service_NIFM, "called");
 }
 
-void IGeneralService::RemoveNetworkProfile(Kernel::HLERequestContext& ctx) {
-    LOG_WARNING(Service_NIFM, "(STUBBED) called");
-    IPC::ResponseBuilder rb{ctx, 2};
-    rb.Push(RESULT_SUCCESS);
-}
-
-void IGeneralService::CreateTemporaryNetworkProfile(Kernel::HLERequestContext& ctx) {
-    IPC::ResponseBuilder rb{ctx, 2, 0, 1};
-
-    rb.Push(RESULT_SUCCESS);
-    rb.PushIpcInterface<INetworkProfile>();
-
-    LOG_DEBUG(Service_NIFM, "called");
-}
+Module::Interface::Interface(std::shared_ptr<Module> module, const char* name)
+    : ServiceFramework(name), module(std::move(module)) {}
 
 void InstallInterfaces(SM::ServiceManager& service_manager) {
-    std::make_shared<NIFM_A>()->InstallAsService(service_manager);
-    std::make_shared<NIFM_S>()->InstallAsService(service_manager);
-    std::make_shared<NIFM_U>()->InstallAsService(service_manager);
+    auto module = std::make_shared<Module>();
+    std::make_shared<NIFM_A>(module)->InstallAsService(service_manager);
+    std::make_shared<NIFM_S>(module)->InstallAsService(service_manager);
+    std::make_shared<NIFM_U>(module)->InstallAsService(service_manager);
 }
 
 } // namespace NIFM

+ 11 - 9
src/core/hle/service/nifm/nifm.h

@@ -9,16 +9,18 @@
 namespace Service {
 namespace NIFM {
 
-class IGeneralService final : public ServiceFramework<IGeneralService> {
+class Module final {
 public:
-    IGeneralService();
-
-private:
-    void GetClientId(Kernel::HLERequestContext& ctx);
-    void CreateScanRequest(Kernel::HLERequestContext& ctx);
-    void CreateRequest(Kernel::HLERequestContext& ctx);
-    void RemoveNetworkProfile(Kernel::HLERequestContext& ctx);
-    void CreateTemporaryNetworkProfile(Kernel::HLERequestContext& ctx);
+    class Interface : public ServiceFramework<Interface> {
+    public:
+        Interface(std::shared_ptr<Module> module, const char* name);
+
+        void CreateGeneralServiceOld(Kernel::HLERequestContext& ctx);
+        void CreateGeneralService(Kernel::HLERequestContext& ctx);
+
+    protected:
+        std::shared_ptr<Module> module;
+    };
 };
 
 void InstallInterfaces(SM::ServiceManager& service_manager);

+ 1 - 18
src/core/hle/service/nifm/nifm_a.cpp

@@ -2,29 +2,12 @@
 // Licensed under GPLv2 or any later version
 // Refer to the license.txt file included.
 
-#include "common/logging/log.h"
-#include "core/hle/ipc_helpers.h"
-#include "core/hle/service/nifm/nifm.h"
 #include "core/hle/service/nifm/nifm_a.h"
 
 namespace Service {
 namespace NIFM {
 
-void NIFM_A::CreateGeneralServiceOld(Kernel::HLERequestContext& ctx) {
-    IPC::ResponseBuilder rb{ctx, 2, 0, 1};
-    rb.Push(RESULT_SUCCESS);
-    rb.PushIpcInterface<IGeneralService>();
-    LOG_DEBUG(Service_NIFM, "called");
-}
-
-void NIFM_A::CreateGeneralService(Kernel::HLERequestContext& ctx) {
-    IPC::ResponseBuilder rb{ctx, 2, 0, 1};
-    rb.Push(RESULT_SUCCESS);
-    rb.PushIpcInterface<IGeneralService>();
-    LOG_DEBUG(Service_NIFM, "called");
-}
-
-NIFM_A::NIFM_A() : ServiceFramework("nifm:a") {
+NIFM_A::NIFM_A(std::shared_ptr<Module> module) : Module::Interface(std::move(module), "nifm:a") {
     static const FunctionInfo functions[] = {
         {4, &NIFM_A::CreateGeneralServiceOld, "CreateGeneralServiceOld"},
         {5, &NIFM_A::CreateGeneralService, "CreateGeneralService"},

+ 3 - 9
src/core/hle/service/nifm/nifm_a.h

@@ -4,20 +4,14 @@
 
 #pragma once
 
-#include "core/hle/kernel/hle_ipc.h"
-#include "core/hle/service/service.h"
+#include "core/hle/service/nifm/nifm.h"
 
 namespace Service {
 namespace NIFM {
 
-class NIFM_A final : public ServiceFramework<NIFM_A> {
+class NIFM_A final : public Module::Interface {
 public:
-    NIFM_A();
-    ~NIFM_A() = default;
-
-private:
-    void CreateGeneralServiceOld(Kernel::HLERequestContext& ctx);
-    void CreateGeneralService(Kernel::HLERequestContext& ctx);
+    explicit NIFM_A(std::shared_ptr<Module> module);
 };
 
 } // namespace NIFM

+ 1 - 18
src/core/hle/service/nifm/nifm_s.cpp

@@ -2,29 +2,12 @@
 // Licensed under GPLv2 or any later version
 // Refer to the license.txt file included.
 
-#include "common/logging/log.h"
-#include "core/hle/ipc_helpers.h"
-#include "core/hle/service/nifm/nifm.h"
 #include "core/hle/service/nifm/nifm_s.h"
 
 namespace Service {
 namespace NIFM {
 
-void NIFM_S::CreateGeneralServiceOld(Kernel::HLERequestContext& ctx) {
-    IPC::ResponseBuilder rb{ctx, 2, 0, 1};
-    rb.Push(RESULT_SUCCESS);
-    rb.PushIpcInterface<IGeneralService>();
-    LOG_DEBUG(Service_NIFM, "called");
-}
-
-void NIFM_S::CreateGeneralService(Kernel::HLERequestContext& ctx) {
-    IPC::ResponseBuilder rb{ctx, 2, 0, 1};
-    rb.Push(RESULT_SUCCESS);
-    rb.PushIpcInterface<IGeneralService>();
-    LOG_DEBUG(Service_NIFM, "called");
-}
-
-NIFM_S::NIFM_S() : ServiceFramework("nifm:s") {
+NIFM_S::NIFM_S(std::shared_ptr<Module> module) : Module::Interface(std::move(module), "nifm:s") {
     static const FunctionInfo functions[] = {
         {4, &NIFM_S::CreateGeneralServiceOld, "CreateGeneralServiceOld"},
         {5, &NIFM_S::CreateGeneralService, "CreateGeneralService"},

+ 3 - 9
src/core/hle/service/nifm/nifm_s.h

@@ -4,20 +4,14 @@
 
 #pragma once
 
-#include "core/hle/kernel/hle_ipc.h"
-#include "core/hle/service/service.h"
+#include "core/hle/service/nifm/nifm.h"
 
 namespace Service {
 namespace NIFM {
 
-class NIFM_S final : public ServiceFramework<NIFM_S> {
+class NIFM_S final : public Module::Interface {
 public:
-    NIFM_S();
-    ~NIFM_S() = default;
-
-private:
-    void CreateGeneralServiceOld(Kernel::HLERequestContext& ctx);
-    void CreateGeneralService(Kernel::HLERequestContext& ctx);
+    explicit NIFM_S(std::shared_ptr<Module> module);
 };
 
 } // namespace NIFM

+ 1 - 18
src/core/hle/service/nifm/nifm_u.cpp

@@ -2,29 +2,12 @@
 // Licensed under GPLv2 or any later version
 // Refer to the license.txt file included.
 
-#include "common/logging/log.h"
-#include "core/hle/ipc_helpers.h"
-#include "core/hle/service/nifm/nifm.h"
 #include "core/hle/service/nifm/nifm_u.h"
 
 namespace Service {
 namespace NIFM {
 
-void NIFM_U::CreateGeneralServiceOld(Kernel::HLERequestContext& ctx) {
-    IPC::ResponseBuilder rb{ctx, 2, 0, 1};
-    rb.Push(RESULT_SUCCESS);
-    rb.PushIpcInterface<IGeneralService>();
-    LOG_DEBUG(Service_NIFM, "called");
-}
-
-void NIFM_U::CreateGeneralService(Kernel::HLERequestContext& ctx) {
-    IPC::ResponseBuilder rb{ctx, 2, 0, 1};
-    rb.Push(RESULT_SUCCESS);
-    rb.PushIpcInterface<IGeneralService>();
-    LOG_DEBUG(Service_NIFM, "called");
-}
-
-NIFM_U::NIFM_U() : ServiceFramework("nifm:u") {
+NIFM_U::NIFM_U(std::shared_ptr<Module> module) : Module::Interface(std::move(module), "nifm:u") {
     static const FunctionInfo functions[] = {
         {4, &NIFM_U::CreateGeneralServiceOld, "CreateGeneralServiceOld"},
         {5, &NIFM_U::CreateGeneralService, "CreateGeneralService"},

+ 3 - 9
src/core/hle/service/nifm/nifm_u.h

@@ -4,20 +4,14 @@
 
 #pragma once
 
-#include "core/hle/kernel/hle_ipc.h"
-#include "core/hle/service/service.h"
+#include "core/hle/service/nifm/nifm.h"
 
 namespace Service {
 namespace NIFM {
 
-class NIFM_U final : public ServiceFramework<NIFM_U> {
+class NIFM_U final : public Module::Interface {
 public:
-    NIFM_U();
-    ~NIFM_U() = default;
-
-private:
-    void CreateGeneralServiceOld(Kernel::HLERequestContext& ctx);
-    void CreateGeneralService(Kernel::HLERequestContext& ctx);
+    explicit NIFM_U(std::shared_ptr<Module> module);
 };
 
 } // namespace NIFM