using Ryujinx.Horizon.Common; using System; using System.Collections.Generic; namespace Ryujinx.Horizon.Sdk.Sf.Cmif { class ServiceDispatchTable : ServiceDispatchTableBase { private readonly string _objectName; private readonly IReadOnlyDictionary _entries; public ServiceDispatchTable(string objectName, IReadOnlyDictionary entries) { _objectName = objectName; _entries = entries; } public override Result ProcessMessage(ref ServiceDispatchContext context, ReadOnlySpan inRawData) { return ProcessMessageImpl(ref context, inRawData, _entries, _objectName); } public static ServiceDispatchTableBase Create(IServiceObject instance) { if (instance is DomainServiceObject) { return new DomainServiceObjectDispatchTable(); } return new ServiceDispatchTable(instance.GetType().Name, instance.GetCommandHandlers()); } } }