diff options
| author | Linus Jahn <lnj@kaidan.im> | 2022-09-10 18:43:04 +0200 |
|---|---|---|
| committer | Linus Jahn <lnj@kaidan.im> | 2022-09-16 21:26:29 +0200 |
| commit | 0b6842abd2877886dcb0ca4154e93d9bae1ef80c (patch) | |
| tree | 105a76e2d6691537fe3f03961ecd5b128006da18 /src/base/QXmppError.cpp | |
| parent | d858e4ae6e0adeaad8d03b055883f411e6d19ab0 (diff) | |
| download | qxmpp-0b6842abd2877886dcb0ca4154e93d9bae1ef80c.tar.gz | |
QXmppError: Add fromIoDevice()
Diffstat (limited to 'src/base/QXmppError.cpp')
| -rw-r--r-- | src/base/QXmppError.cpp | 14 |
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 |
