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