diff options
author | jduncanator <1518948+jduncanator@users.noreply.github.com> | 2021-08-12 05:16:42 +1000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-08-11 21:16:42 +0200 |
commit | b5b7e23fc41e7045f9e803d6926e98ec7d049f0c (patch) | |
tree | 0e96258038ef9af06dfcac976b3cfad7240cae03 /Ryujinx.HLE/Exceptions/ServiceNotImplementedException.cs | |
parent | d9d18439f6900fd9f05bde41998526281f7638c5 (diff) |
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.
Diffstat (limited to 'Ryujinx.HLE/Exceptions/ServiceNotImplementedException.cs')
-rw-r--r-- | Ryujinx.HLE/Exceptions/ServiceNotImplementedException.cs | 16 |
1 files changed, 7 insertions, 9 deletions
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); |