mirror of
https://github.com/Atmosphere-NX/Atmosphere.git
synced 2025-08-09 09:38:52 +00:00
sf: update ncm for new format
This commit is contained in:
parent
4a3a6dec29
commit
afb4cafcdc
1 changed files with 15 additions and 25 deletions
|
@ -153,24 +153,21 @@ namespace {
|
||||||
|
|
||||||
class ContentManagerServerManager : public sf::hipc::ServerManager<ContentManagerNumServers, ContentManagerServerOptions, ContentManagerMaxSessions> {
|
class ContentManagerServerManager : public sf::hipc::ServerManager<ContentManagerNumServers, ContentManagerServerOptions, ContentManagerMaxSessions> {
|
||||||
private:
|
private:
|
||||||
using ServiceType = ncm::ContentManagerImpl;
|
using Interface = ncm::IContentManager;
|
||||||
|
using ServiceImpl = ncm::ContentManagerImpl;
|
||||||
private:
|
private:
|
||||||
os::ThreadType thread;
|
os::ThreadType thread;
|
||||||
std::shared_ptr<ServiceType> ncm_manager;
|
std::shared_ptr<Interface> ncm_manager;
|
||||||
private:
|
private:
|
||||||
static void ThreadFunction(void *_this) {
|
static void ThreadFunction(void *_this) {
|
||||||
reinterpret_cast<ContentManagerServerManager *>(_this)->LoopProcess();
|
reinterpret_cast<ContentManagerServerManager *>(_this)->LoopProcess();
|
||||||
}
|
}
|
||||||
public:
|
public:
|
||||||
ContentManagerServerManager(ServiceType *m)
|
ContentManagerServerManager() : ncm_manager() { /* ... */ }
|
||||||
: ncm_manager()
|
|
||||||
{
|
|
||||||
/* ... */
|
|
||||||
}
|
|
||||||
|
|
||||||
ams::Result Initialize(std::shared_ptr<ServiceType> manager_obj) {
|
ams::Result Initialize(std::shared_ptr<Interface> manager_obj) {
|
||||||
this->ncm_manager = manager_obj;
|
this->ncm_manager = manager_obj;
|
||||||
return this->RegisterServer<ServiceType>(ContentManagerServiceName, ContentManagerManagerSessions, this->ncm_manager);
|
return this->RegisterServer<Interface, ServiceImpl>(ContentManagerServiceName, ContentManagerManagerSessions, this->ncm_manager);
|
||||||
}
|
}
|
||||||
|
|
||||||
ams::Result StartThreads() {
|
ams::Result StartThreads() {
|
||||||
|
@ -200,23 +197,20 @@ namespace {
|
||||||
|
|
||||||
class LocationResolverServerManager : public sf::hipc::ServerManager<LocationResolverNumServers, LocationResolverServerOptions, LocationResolverMaxSessions> {
|
class LocationResolverServerManager : public sf::hipc::ServerManager<LocationResolverNumServers, LocationResolverServerOptions, LocationResolverMaxSessions> {
|
||||||
private:
|
private:
|
||||||
using ServiceType = lr::LocationResolverManagerImpl;
|
using Interface = lr::ILocationResolverManager;
|
||||||
|
using ServiceImpl = lr::LocationResolverManagerImpl;
|
||||||
private:
|
private:
|
||||||
os::ThreadType thread;
|
os::ThreadType thread;
|
||||||
std::shared_ptr<ServiceType> lr_manager;
|
std::shared_ptr<Interface> lr_manager;
|
||||||
private:
|
private:
|
||||||
static void ThreadFunction(void *_this) {
|
static void ThreadFunction(void *_this) {
|
||||||
reinterpret_cast<LocationResolverServerManager *>(_this)->LoopProcess();
|
reinterpret_cast<LocationResolverServerManager *>(_this)->LoopProcess();
|
||||||
}
|
}
|
||||||
public:
|
public:
|
||||||
LocationResolverServerManager(ServiceType *m)
|
LocationResolverServerManager(ServiceImpl &m) : lr_manager(sf::GetSharedPointerTo<Interface>(m)) { /* ... */ }
|
||||||
: lr_manager(sf::ServiceObjectTraits<ServiceType>::SharedPointerHelper::GetEmptyDeleteSharedPointer(m))
|
|
||||||
{
|
|
||||||
/* ... */
|
|
||||||
}
|
|
||||||
|
|
||||||
ams::Result Initialize() {
|
ams::Result Initialize() {
|
||||||
return this->RegisterServer<ServiceType>(LocationResolverServiceName, LocationResolverManagerSessions, this->lr_manager);
|
return this->RegisterServer<Interface, ServiceImpl>(LocationResolverServiceName, LocationResolverManagerSessions, this->lr_manager);
|
||||||
}
|
}
|
||||||
|
|
||||||
ams::Result StartThreads() {
|
ams::Result StartThreads() {
|
||||||
|
@ -232,14 +226,10 @@ namespace {
|
||||||
};
|
};
|
||||||
|
|
||||||
ncm::ContentManagerImpl g_ncm_manager_service_object;
|
ncm::ContentManagerImpl g_ncm_manager_service_object;
|
||||||
ContentManagerServerManager g_ncm_server_manager(std::addressof(g_ncm_manager_service_object));
|
ContentManagerServerManager g_ncm_server_manager;
|
||||||
|
|
||||||
lr::LocationResolverManagerImpl g_lr_manager_service_object;
|
lr::LocationResolverManagerImpl g_lr_manager_service_object;
|
||||||
LocationResolverServerManager g_lr_server_manager(std::addressof(g_lr_manager_service_object));
|
LocationResolverServerManager g_lr_server_manager(g_lr_manager_service_object);
|
||||||
|
|
||||||
ALWAYS_INLINE std::shared_ptr<ncm::ContentManagerImpl> GetSharedPointerToContentManager() {
|
|
||||||
return sf::ServiceObjectTraits<ncm::ContentManagerImpl>::SharedPointerHelper::GetEmptyDeleteSharedPointer(std::addressof(g_ncm_manager_service_object));
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Compile-time configuration. */
|
/* Compile-time configuration. */
|
||||||
#ifdef NCM_BUILD_FOR_INTITIALIZE
|
#ifdef NCM_BUILD_FOR_INTITIALIZE
|
||||||
|
@ -270,8 +260,8 @@ int main(int argc, char **argv)
|
||||||
AMS_ASSERT(os::GetThreadPriority(os::GetCurrentThread()) == AMS_GET_SYSTEM_THREAD_PRIORITY(ncm, MainWaitThreads));
|
AMS_ASSERT(os::GetThreadPriority(os::GetCurrentThread()) == AMS_GET_SYSTEM_THREAD_PRIORITY(ncm, MainWaitThreads));
|
||||||
|
|
||||||
/* Create and initialize the content manager. */
|
/* Create and initialize the content manager. */
|
||||||
auto content_manager = GetSharedPointerToContentManager();
|
auto content_manager = sf::GetSharedPointerTo<ncm::IContentManager>(g_ncm_manager_service_object);
|
||||||
R_ABORT_UNLESS(content_manager->Initialize(ManagerConfig));
|
R_ABORT_UNLESS(content_manager->GetImpl().Initialize(ManagerConfig));
|
||||||
|
|
||||||
/* Initialize ncm's server and start threads. */
|
/* Initialize ncm's server and start threads. */
|
||||||
R_ABORT_UNLESS(g_ncm_server_manager.Initialize(content_manager));
|
R_ABORT_UNLESS(g_ncm_server_manager.Initialize(content_manager));
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue