core: Relocate g_service_manager to the System class

Converts the service manager from a global into an instance-based
variable.
This commit is contained in:
Lioncash 2018-04-20 19:29:04 -04:00
parent 1df3a7710e
commit 659a612368
6 changed files with 65 additions and 37 deletions

View file

@ -14,6 +14,8 @@
namespace Service::SM {
ServiceManager::~ServiceManager() = default;
void ServiceManager::InvokeControlRequest(Kernel::HLERequestContext& context) {
controller_interface->InvokeRequest(context);
}
@ -72,7 +74,7 @@ ResultVal<Kernel::SharedPtr<Kernel::ClientSession>> ServiceManager::ConnectToSer
return client_port->Connect();
}
std::shared_ptr<ServiceManager> g_service_manager;
SM::~SM() = default;
/**
* SM::Initialize service function

View file

@ -23,7 +23,7 @@ namespace Service::SM {
class SM final : public ServiceFramework<SM> {
public:
SM(std::shared_ptr<ServiceManager> service_manager);
~SM() = default;
~SM() override;
private:
void Initialize(Kernel::HLERequestContext& ctx);
@ -44,6 +44,8 @@ class ServiceManager {
public:
static void InstallInterfaces(std::shared_ptr<ServiceManager> self);
~ServiceManager();
ResultVal<Kernel::SharedPtr<Kernel::ServerPort>> RegisterService(std::string name,
unsigned int max_sessions);
ResultVal<Kernel::SharedPtr<Kernel::ClientPort>> GetServicePort(const std::string& name);
@ -59,6 +61,4 @@ private:
std::unordered_map<std::string, Kernel::SharedPtr<Kernel::ClientPort>> registered_services;
};
extern std::shared_ptr<ServiceManager> g_service_manager;
} // namespace Service::SM