|
|
|
@ -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;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|