sf: update ncm for new format

This commit is contained in:
Michael Scire 2020-07-07 00:44:52 -07:00
commit afb4cafcdc

View file

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