diff options
| author | 2021-01-24 15:17:02 -0500 | |
|---|---|---|
| committer | 2021-02-28 17:25:31 -0500 | |
| commit | 2910aa77b2feea39fc0618598e275b138a346e71 (patch) | |
| tree | 2760d0c2914c672ae2cd2450851e4feda3b053e5 /src/common/common_funcs.h | |
| parent | Merge pull request #6007 from bunnei/ldn-error (diff) | |
| download | yuzu-2910aa77b2feea39fc0618598e275b138a346e71.tar.gz yuzu-2910aa77b2feea39fc0618598e275b138a346e71.tar.xz yuzu-2910aa77b2feea39fc0618598e275b138a346e71.zip | |
[network] Error handling reform
`network.cpp` has several error paths which either:
- report "Unhandled host socket error=n" and return `SUCCESS`, or
- switch on a few possible errors, log them, and translate them to
Errno; the same switch statement is copied and pasted in multiple
places in the code
Convert these paths to use a helper function `GetAndLogLastError`, which
is roughly the equivalent of one of the switch statements, but:
- handling more cases (both ones that were already in `Errno`, and a few
more I added), and
- using OS functions to convert the error to a string when logging, so
it'll describe the error even if it's not one of the ones in the
switch statement.
- To handle this, refactor the logic in `GetLastErrorMsg` to expose a
new function `NativeErrorToString` which takes the error number
explicitly as an argument. And improve the Windows version a bit.
Also, add a test which exercises two random error paths.
Diffstat (limited to 'src/common/common_funcs.h')
| -rw-r--r-- | src/common/common_funcs.h | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/common/common_funcs.h b/src/common/common_funcs.h index 71b64e32a..4ace2cd33 100644 --- a/src/common/common_funcs.h +++ b/src/common/common_funcs.h | |||
| @@ -52,9 +52,13 @@ __declspec(dllimport) void __stdcall DebugBreak(void); | |||
| 52 | // Generic function to get last error message. | 52 | // Generic function to get last error message. |
| 53 | // Call directly after the command or use the error num. | 53 | // Call directly after the command or use the error num. |
| 54 | // This function might change the error code. | 54 | // This function might change the error code. |
| 55 | // Defined in Misc.cpp. | 55 | // Defined in misc.cpp. |
| 56 | [[nodiscard]] std::string GetLastErrorMsg(); | 56 | [[nodiscard]] std::string GetLastErrorMsg(); |
| 57 | 57 | ||
| 58 | // Like GetLastErrorMsg(), but passing an explicit error code. | ||
| 59 | // Defined in misc.cpp. | ||
| 60 | [[nodiscard]] std::string NativeErrorToString(int e); | ||
| 61 | |||
| 58 | #define DECLARE_ENUM_FLAG_OPERATORS(type) \ | 62 | #define DECLARE_ENUM_FLAG_OPERATORS(type) \ |
| 59 | [[nodiscard]] constexpr type operator|(type a, type b) noexcept { \ | 63 | [[nodiscard]] constexpr type operator|(type a, type b) noexcept { \ |
| 60 | using T = std::underlying_type_t<type>; \ | 64 | using T = std::underlying_type_t<type>; \ |