|
|
|
@ -97,29 +97,33 @@ ServiceFrameworkBase::ServiceFrameworkBase(const char* service_name, u32 max_ses |
|
|
|
ServiceFrameworkBase::~ServiceFrameworkBase() = default; |
|
|
|
|
|
|
|
void ServiceFrameworkBase::InstallAsService(SM::ServiceManager& service_manager) { |
|
|
|
ASSERT(port == nullptr); |
|
|
|
port = service_manager.RegisterService(service_name, max_sessions).Unwrap(); |
|
|
|
ASSERT(!port_installed); |
|
|
|
|
|
|
|
auto port = service_manager.RegisterService(service_name, max_sessions).Unwrap(); |
|
|
|
port->SetHleHandler(shared_from_this()); |
|
|
|
port_installed = true; |
|
|
|
} |
|
|
|
|
|
|
|
void ServiceFrameworkBase::InstallAsNamedPort() { |
|
|
|
ASSERT(port == nullptr); |
|
|
|
ASSERT(!port_installed); |
|
|
|
|
|
|
|
auto& kernel = Core::System::GetInstance().Kernel(); |
|
|
|
auto [server_port, client_port] = |
|
|
|
Kernel::ServerPort::CreatePortPair(kernel, max_sessions, service_name); |
|
|
|
server_port->SetHleHandler(shared_from_this()); |
|
|
|
kernel.AddNamedPort(service_name, std::move(client_port)); |
|
|
|
port_installed = true; |
|
|
|
} |
|
|
|
|
|
|
|
Kernel::SharedPtr<Kernel::ClientPort> ServiceFrameworkBase::CreatePort() { |
|
|
|
ASSERT(port == nullptr); |
|
|
|
ASSERT(!port_installed); |
|
|
|
|
|
|
|
auto& kernel = Core::System::GetInstance().Kernel(); |
|
|
|
auto [server_port, client_port] = |
|
|
|
Kernel::ServerPort::CreatePortPair(kernel, max_sessions, service_name); |
|
|
|
port = MakeResult(std::move(server_port)).Unwrap(); |
|
|
|
auto port = MakeResult(std::move(server_port)).Unwrap(); |
|
|
|
port->SetHleHandler(shared_from_this()); |
|
|
|
port_installed = true; |
|
|
|
return client_port; |
|
|
|
} |
|
|
|
|
|
|
|
|