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