diff options
| author | bunnei <bunneidev@gmail.com> | 2019-06-05 18:05:50 -0400 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-06-05 18:05:50 -0400 | 
| commit | e4fea833d4b9c6089bf56c85d64db9a9ec226936 (patch) | |
| tree | 9b4b76c91fd351bb9a0f17784cb3c684e42218a0 /src/core/hle/service | |
| parent | 8d7a012297ea884f0309ed2207eeb5e6c8d6a495 (diff) | |
| parent | 52b80d231cb3e1b234f1fcfe00cc1577d42cb966 (diff) | |
Merge pull request #2419 from DarkLordZach/srv-lr-iface
lr: Add command handler skeletons for Open*LocationResolver
Diffstat (limited to 'src/core/hle/service')
| -rw-r--r-- | src/core/hle/service/ncm/ncm.cpp | 80 | 
1 files changed, 77 insertions, 3 deletions
| diff --git a/src/core/hle/service/ncm/ncm.cpp b/src/core/hle/service/ncm/ncm.cpp index 5d31f638f..b405a4b66 100644 --- a/src/core/hle/service/ncm/ncm.cpp +++ b/src/core/hle/service/ncm/ncm.cpp @@ -4,15 +4,89 @@  #include <memory> +#include "core/file_sys/romfs_factory.h" +#include "core/hle/ipc_helpers.h"  #include "core/hle/service/ncm/ncm.h"  #include "core/hle/service/service.h"  #include "core/hle/service/sm/sm.h"  namespace Service::NCM { -class LocationResolver final : public ServiceFramework<LocationResolver> { +class ILocationResolver final : public ServiceFramework<ILocationResolver> {  public: -    explicit LocationResolver() : ServiceFramework{"lr"} { +    explicit ILocationResolver(FileSys::StorageId id) +        : ServiceFramework{"ILocationResolver"}, storage(id) { +        // clang-format off +        static const FunctionInfo functions[] = { +            {0, nullptr, "ResolveProgramPath"}, +            {1, nullptr, "RedirectProgramPath"}, +            {2, nullptr, "ResolveApplicationControlPath"}, +            {3, nullptr, "ResolveApplicationHtmlDocumentPath"}, +            {4, nullptr, "ResolveDataPath"}, +            {5, nullptr, "RedirectApplicationControlPath"}, +            {6, nullptr, "RedirectApplicationHtmlDocumentPath"}, +            {7, nullptr, "ResolveApplicationLegalInformationPath"}, +            {8, nullptr, "RedirectApplicationLegalInformationPath"}, +            {9, nullptr, "Refresh"}, +            {10, nullptr, "RedirectProgramPath2"}, +            {11, nullptr, "Refresh2"}, +            {12, nullptr, "DeleteProgramPath"}, +            {13, nullptr, "DeleteApplicationControlPath"}, +            {14, nullptr, "DeleteApplicationHtmlDocumentPath"}, +            {15, nullptr, "DeleteApplicationLegalInformationPath"}, +            {16, nullptr, ""}, +            {17, nullptr, ""}, +            {18, nullptr, ""}, +            {19, nullptr, ""}, +        }; +        // clang-format on + +        RegisterHandlers(functions); +    } + +private: +    FileSys::StorageId storage; +}; + +class IRegisteredLocationResolver final : public ServiceFramework<IRegisteredLocationResolver> { +public: +    explicit IRegisteredLocationResolver() : ServiceFramework{"IRegisteredLocationResolver"} { +        // clang-format off +        static const FunctionInfo functions[] = { +            {0, nullptr, "ResolveProgramPath"}, +            {1, nullptr, "RegisterProgramPath"}, +            {2, nullptr, "UnregisterProgramPath"}, +            {3, nullptr, "RedirectProgramPath"}, +            {4, nullptr, "ResolveHtmlDocumentPath"}, +            {5, nullptr, "RegisterHtmlDocumentPath"}, +            {6, nullptr, "UnregisterHtmlDocumentPath"}, +            {7, nullptr, "RedirectHtmlDocumentPath"}, +            {8, nullptr, ""}, +        }; +        // clang-format on + +        RegisterHandlers(functions); +    } +}; + +class IAddOnContentLocationResolver final : public ServiceFramework<IAddOnContentLocationResolver> { +public: +    explicit IAddOnContentLocationResolver() : ServiceFramework{"IAddOnContentLocationResolver"} { +        // clang-format off +        static const FunctionInfo functions[] = { +            {0, nullptr, "ResolveAddOnContentPath"}, +            {1, nullptr, "RegisterAddOnContentStorage"}, +            {2, nullptr, "UnregisterAllAddOnContentPath"}, +        }; +        // clang-format on + +        RegisterHandlers(functions); +    } +}; + +class LR final : public ServiceFramework<LR> { +public: +    explicit LR() : ServiceFramework{"lr"} {          // clang-format off          static const FunctionInfo functions[] = {              {0, nullptr, "OpenLocationResolver"}, @@ -52,7 +126,7 @@ public:  };  void InstallInterfaces(SM::ServiceManager& sm) { -    std::make_shared<LocationResolver>()->InstallAsService(sm); +    std::make_shared<LR>()->InstallAsService(sm);      std::make_shared<NCM>()->InstallAsService(sm);  } | 
