forked from eden-emu/eden
		
	Merge pull request #823 from lioncash/nifm
service/nifm: Deduplicate interface code
This commit is contained in:
		
						commit
						5177141f28
					
				
					 9 changed files with 30 additions and 141 deletions
				
			
		|  | @ -164,12 +164,6 @@ add_library(core STATIC | |||
|     hle/service/nfp/nfp_user.h | ||||
|     hle/service/nifm/nifm.cpp | ||||
|     hle/service/nifm/nifm.h | ||||
|     hle/service/nifm/nifm_a.cpp | ||||
|     hle/service/nifm/nifm_a.h | ||||
|     hle/service/nifm/nifm_s.cpp | ||||
|     hle/service/nifm/nifm_s.h | ||||
|     hle/service/nifm/nifm_u.cpp | ||||
|     hle/service/nifm/nifm_u.h | ||||
|     hle/service/ns/ns.cpp | ||||
|     hle/service/ns/ns.h | ||||
|     hle/service/ns/pl_u.cpp | ||||
|  |  | |||
|  | @ -5,9 +5,7 @@ | |||
| #include "core/hle/ipc_helpers.h" | ||||
| #include "core/hle/kernel/event.h" | ||||
| #include "core/hle/service/nifm/nifm.h" | ||||
| #include "core/hle/service/nifm/nifm_a.h" | ||||
| #include "core/hle/service/nifm/nifm_s.h" | ||||
| #include "core/hle/service/nifm/nifm_u.h" | ||||
| #include "core/hle/service/service.h" | ||||
| 
 | ||||
| namespace Service::NIFM { | ||||
| 
 | ||||
|  | @ -210,28 +208,35 @@ IGeneralService::IGeneralService() : ServiceFramework("IGeneralService") { | |||
|     RegisterHandlers(functions); | ||||
| } | ||||
| 
 | ||||
| void Module::Interface::CreateGeneralServiceOld(Kernel::HLERequestContext& ctx) { | ||||
| class NetworkInterface final : public ServiceFramework<NetworkInterface> { | ||||
| public: | ||||
|     explicit NetworkInterface(const char* name) : ServiceFramework{name} { | ||||
|         static const FunctionInfo functions[] = { | ||||
|             {4, &NetworkInterface::CreateGeneralServiceOld, "CreateGeneralServiceOld"}, | ||||
|             {5, &NetworkInterface::CreateGeneralService, "CreateGeneralService"}, | ||||
|         }; | ||||
|         RegisterHandlers(functions); | ||||
|     } | ||||
| 
 | ||||
|     void CreateGeneralServiceOld(Kernel::HLERequestContext& ctx) { | ||||
|         IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | ||||
|         rb.Push(RESULT_SUCCESS); | ||||
|         rb.PushIpcInterface<IGeneralService>(); | ||||
|         LOG_DEBUG(Service_NIFM, "called"); | ||||
| } | ||||
|     } | ||||
| 
 | ||||
| void Module::Interface::CreateGeneralService(Kernel::HLERequestContext& ctx) { | ||||
|     void CreateGeneralService(Kernel::HLERequestContext& ctx) { | ||||
|         IPC::ResponseBuilder rb{ctx, 2, 0, 1}; | ||||
|         rb.Push(RESULT_SUCCESS); | ||||
|         rb.PushIpcInterface<IGeneralService>(); | ||||
|         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) { | ||||
|     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); | ||||
|     std::make_shared<NetworkInterface>("nifm:a")->InstallAsService(service_manager); | ||||
|     std::make_shared<NetworkInterface>("nifm:s")->InstallAsService(service_manager); | ||||
|     std::make_shared<NetworkInterface>("nifm:u")->InstallAsService(service_manager); | ||||
| } | ||||
| 
 | ||||
| } // namespace Service::NIFM
 | ||||
|  |  | |||
|  | @ -4,24 +4,13 @@ | |||
| 
 | ||||
| #pragma once | ||||
| 
 | ||||
| #include "core/hle/service/service.h" | ||||
| namespace Service::SM { | ||||
| class ServiceManager; | ||||
| } | ||||
| 
 | ||||
| namespace Service::NIFM { | ||||
| 
 | ||||
| class Module final { | ||||
| public: | ||||
|     class Interface : public ServiceFramework<Interface> { | ||||
|     public: | ||||
|         explicit 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; | ||||
|     }; | ||||
| }; | ||||
| 
 | ||||
| /// Registers all NIFM services with the specified service manager.
 | ||||
| void InstallInterfaces(SM::ServiceManager& service_manager); | ||||
| 
 | ||||
| } // namespace Service::NIFM
 | ||||
|  |  | |||
|  | @ -1,17 +0,0 @@ | |||
| // Copyright 2018 yuzu emulator team
 | ||||
| // Licensed under GPLv2 or any later version
 | ||||
| // Refer to the license.txt file included.
 | ||||
| 
 | ||||
| #include "core/hle/service/nifm/nifm_a.h" | ||||
| 
 | ||||
| namespace Service::NIFM { | ||||
| 
 | ||||
| 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"}, | ||||
|     }; | ||||
|     RegisterHandlers(functions); | ||||
| } | ||||
| 
 | ||||
| } // namespace Service::NIFM
 | ||||
|  | @ -1,16 +0,0 @@ | |||
| // Copyright 2018 yuzu emulator team
 | ||||
| // Licensed under GPLv2 or any later version
 | ||||
| // Refer to the license.txt file included.
 | ||||
| 
 | ||||
| #pragma once | ||||
| 
 | ||||
| #include "core/hle/service/nifm/nifm.h" | ||||
| 
 | ||||
| namespace Service::NIFM { | ||||
| 
 | ||||
| class NIFM_A final : public Module::Interface { | ||||
| public: | ||||
|     explicit NIFM_A(std::shared_ptr<Module> module); | ||||
| }; | ||||
| 
 | ||||
| } // namespace Service::NIFM
 | ||||
|  | @ -1,17 +0,0 @@ | |||
| // Copyright 2018 yuzu emulator team
 | ||||
| // Licensed under GPLv2 or any later version
 | ||||
| // Refer to the license.txt file included.
 | ||||
| 
 | ||||
| #include "core/hle/service/nifm/nifm_s.h" | ||||
| 
 | ||||
| namespace Service::NIFM { | ||||
| 
 | ||||
| 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"}, | ||||
|     }; | ||||
|     RegisterHandlers(functions); | ||||
| } | ||||
| 
 | ||||
| } // namespace Service::NIFM
 | ||||
|  | @ -1,16 +0,0 @@ | |||
| // Copyright 2018 yuzu emulator team
 | ||||
| // Licensed under GPLv2 or any later version
 | ||||
| // Refer to the license.txt file included.
 | ||||
| 
 | ||||
| #pragma once | ||||
| 
 | ||||
| #include "core/hle/service/nifm/nifm.h" | ||||
| 
 | ||||
| namespace Service::NIFM { | ||||
| 
 | ||||
| class NIFM_S final : public Module::Interface { | ||||
| public: | ||||
|     explicit NIFM_S(std::shared_ptr<Module> module); | ||||
| }; | ||||
| 
 | ||||
| } // namespace Service::NIFM
 | ||||
|  | @ -1,17 +0,0 @@ | |||
| // Copyright 2018 yuzu emulator team
 | ||||
| // Licensed under GPLv2 or any later version
 | ||||
| // Refer to the license.txt file included.
 | ||||
| 
 | ||||
| #include "core/hle/service/nifm/nifm_u.h" | ||||
| 
 | ||||
| namespace Service::NIFM { | ||||
| 
 | ||||
| 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"}, | ||||
|     }; | ||||
|     RegisterHandlers(functions); | ||||
| } | ||||
| 
 | ||||
| } // namespace Service::NIFM
 | ||||
|  | @ -1,16 +0,0 @@ | |||
| // Copyright 2018 yuzu emulator team
 | ||||
| // Licensed under GPLv2 or any later version
 | ||||
| // Refer to the license.txt file included.
 | ||||
| 
 | ||||
| #pragma once | ||||
| 
 | ||||
| #include "core/hle/service/nifm/nifm.h" | ||||
| 
 | ||||
| namespace Service::NIFM { | ||||
| 
 | ||||
| class NIFM_U final : public Module::Interface { | ||||
| public: | ||||
|     explicit NIFM_U(std::shared_ptr<Module> module); | ||||
| }; | ||||
| 
 | ||||
| } // namespace Service::NIFM
 | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Sebastian Valle
						Sebastian Valle