aboutsummaryrefslogtreecommitdiff
path: root/src/base/QXmppError.cpp
diff options
context:
space:
mode:
authorLinus Jahn <lnj@kaidan.im>2022-09-10 18:43:04 +0200
committerLinus Jahn <lnj@kaidan.im>2022-09-16 21:26:29 +0200
commit0b6842abd2877886dcb0ca4154e93d9bae1ef80c (patch)
tree105a76e2d6691537fe3f03961ecd5b128006da18 /src/base/QXmppError.cpp
parentd858e4ae6e0adeaad8d03b055883f411e6d19ab0 (diff)
downloadqxmpp-0b6842abd2877886dcb0ca4154e93d9bae1ef80c.tar.gz
QXmppError: Add fromIoDevice()
Diffstat (limited to 'src/base/QXmppError.cpp')
-rw-r--r--src/base/QXmppError.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/base/QXmppError.cpp b/src/base/QXmppError.cpp
index 80578c0d..eab4c749 100644
--- a/src/base/QXmppError.cpp
+++ b/src/base/QXmppError.cpp
@@ -32,6 +32,20 @@
///
///
+/// Constructs a QXmppError from an QIODevice
+///
+/// It tries to cast the IO device to different known IO devices to get a useful more specific
+/// error, i.e. it returns a QXmppError with QFileDevice::FileError for QFileDevices.
+///
+QXmppError QXmppError::fromIoDevice(const QIODevice &device)
+{
+ if (const auto *file = dynamic_cast<const QFileDevice *>(&device)) {
+ return QXmppError { file->errorString(), file->error() };
+ }
+ return QXmppError { device.errorString(), std::any() };
+}
+
+///
/// Returns whether the error is a QNetworkReply::NetworkError.
///
bool QXmppError::isFileError() const