ServiceObjectHolder.cs 993 B

12345678910111213141516171819202122232425262728293031323334
  1. using Ryujinx.Horizon.Common;
  2. using System;
  3. namespace Ryujinx.Horizon.Sdk.Sf.Cmif
  4. {
  5. class ServiceObjectHolder
  6. {
  7. public IServiceObject ServiceObject { get; }
  8. private readonly ServiceDispatchMeta _dispatchMeta;
  9. public ServiceObjectHolder(ServiceObjectHolder objectHolder)
  10. {
  11. ServiceObject = objectHolder.ServiceObject;
  12. _dispatchMeta = objectHolder._dispatchMeta;
  13. }
  14. public ServiceObjectHolder(IServiceObject serviceImpl)
  15. {
  16. ServiceObject = serviceImpl;
  17. _dispatchMeta = new ServiceDispatchMeta(ServiceDispatchTable.Create(serviceImpl));
  18. }
  19. public ServiceObjectHolder Clone()
  20. {
  21. return new ServiceObjectHolder(this);
  22. }
  23. public Result ProcessMessage(ref ServiceDispatchContext context, ReadOnlySpan<byte> inRawData)
  24. {
  25. return _dispatchMeta.DispatchTable.ProcessMessage(ref context, inRawData);
  26. }
  27. }
  28. }