From b5b7e23fc41e7045f9e803d6926e98ec7d049f0c Mon Sep 17 00:00:00 2001 From: jduncanator <1518948+jduncanator@users.noreply.github.com> Date: Thu, 12 Aug 2021 05:16:42 +1000 Subject: hle: Tidy-up ServiceNotImplementedException (#2535) * hle: Simplify ServiceNotImplementedException This removes the need to pass in whether the command is a Tipc command or a Hipc command to the exception constructor. * hle: Use the IPC Message type to determine command type This allows differentiating between Tipc and Hipc commands when invoking a handler that supports handling both Tipc and Hipc commands. --- Ryujinx.HLE/Exceptions/ServiceNotImplementedException.cs | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) (limited to 'Ryujinx.HLE/Exceptions/ServiceNotImplementedException.cs') diff --git a/Ryujinx.HLE/Exceptions/ServiceNotImplementedException.cs b/Ryujinx.HLE/Exceptions/ServiceNotImplementedException.cs index b15ff229..c9247cc1 100644 --- a/Ryujinx.HLE/Exceptions/ServiceNotImplementedException.cs +++ b/Ryujinx.HLE/Exceptions/ServiceNotImplementedException.cs @@ -18,28 +18,24 @@ namespace Ryujinx.HLE.Exceptions public ServiceCtx Context { get; } public IpcMessage Request { get; } - private bool _isTipcCommand; - - public ServiceNotImplementedException(IpcService service, ServiceCtx context, bool isTipcCommand) - : this(service, context, "The service call is not implemented.", isTipcCommand) + public ServiceNotImplementedException(IpcService service, ServiceCtx context) + : this(service, context, "The service call is not implemented.") { } - public ServiceNotImplementedException(IpcService service, ServiceCtx context, string message, bool isTipcCommand) + public ServiceNotImplementedException(IpcService service, ServiceCtx context, string message) : base(message) { Service = service; Context = context; Request = context.Request; - _isTipcCommand = isTipcCommand; } - public ServiceNotImplementedException(IpcService service, ServiceCtx context, string message, Exception inner, bool isTipcCommand) + public ServiceNotImplementedException(IpcService service, ServiceCtx context, string message, Exception inner) : base(message, inner) { Service = service; Context = context; Request = context.Request; - _isTipcCommand = isTipcCommand; } protected ServiceNotImplementedException(SerializationInfo info, StreamingContext context) @@ -66,7 +62,9 @@ namespace Ryujinx.HLE.Exceptions if (callingType != null && callingMethod != null) { - var ipcCommands = _isTipcCommand ? Service.TipcCommands : Service.HipcCommands; + // If the type is past 0xF, we are using TIPC + var ipcCommands = Request.Type > IpcMessageType.TipcCloseSession ? + Service.TipcCommands : Service.HipcCommands; // Find the handler for the method called var ipcHandler = ipcCommands.FirstOrDefault(x => x.Value == callingMethod); -- cgit v1.2.3-70-g09d2