| 123456789101112131415161718192021222324252627282930313233343536373839404142 |
- using Ryujinx.Common.Logging;
- using Ryujinx.HLE.HOS.Ipc;
- using Ryujinx.HLE.HOS.Kernel.Common;
- using Ryujinx.HLE.HOS.Kernel.Threading;
- using Ryujinx.HLE.HOS.Services.Nim.ShopServiceAccessServerInterface.ShopServiceAccessServer.ShopServiceAccessor;
- using System;
- namespace Ryujinx.HLE.HOS.Services.Nim.ShopServiceAccessServerInterface.ShopServiceAccessServer
- {
- class IShopServiceAccessor : IpcService
- {
- private readonly KEvent _event;
- private int _eventHandle;
- public IShopServiceAccessor(Horizon system)
- {
- _event = new KEvent(system.KernelContext);
- }
- [CommandHipc(0)]
- // CreateAsyncInterface(u64) -> (handle<copy>, object<nn::ec::IShopServiceAsync>)
- public ResultCode CreateAsyncInterface(ServiceCtx context)
- {
- MakeObject(context, new IShopServiceAsync());
- if (_eventHandle == 0)
- {
- if (context.Process.HandleTable.GenerateHandle(_event.ReadableEvent, out _eventHandle) != KernelResult.Success)
- {
- throw new InvalidOperationException("Out of handles!");
- }
- }
- context.Response.HandleDesc = IpcHandleDesc.MakeCopy(_eventHandle);
- Logger.Stub?.PrintStub(LogClass.ServiceNim);
- return ResultCode.Success;
- }
- }
- }
|