From be19bfef2d04943aa17b3f719f50f34f647c4eeb Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Mon, 28 Aug 2017 21:21:44 -0600 Subject: Translate the error in both runJob overloads. --- examples/imapresource/imapserverproxy.cpp | 33 ++++++++++++++++--------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/examples/imapresource/imapserverproxy.cpp b/examples/imapresource/imapserverproxy.cpp index a0f0970..5c2e07c 100644 --- a/examples/imapresource/imapserverproxy.cpp +++ b/examples/imapresource/imapserverproxy.cpp @@ -61,6 +61,21 @@ const char* Imap::Capabilities::Namespace = "NAMESPACE"; const char* Imap::Capabilities::Uidplus = "UIDPLUS"; const char* Imap::Capabilities::Condstore = "CONDSTORE"; +static int translateImapError(int error) +{ + switch (error) { + case KJob::UserDefinedError: + return Imap::ConnectionLost; + case KIMAP2::LoginJob::ErrorCode::ERR_HOST_NOT_FOUND: + return Imap::HostNotFoundError; + case KIMAP2::LoginJob::ErrorCode::ERR_COULD_NOT_CONNECT: + return Imap::CouldNotConnectError; + case KIMAP2::LoginJob::ErrorCode::ERR_SSL_HANDSHAKE_FAILED: + return Imap::SslHandshakeError; + } + return Imap::UnknownError; +} + template static KAsync::Job runJob(KJob *job, const std::function &f) { @@ -69,7 +84,8 @@ static KAsync::Job runJob(KJob *job, const std::function &f) SinkTrace() << "Job done: " << job->metaObject()->className(); if (job->error()) { SinkWarning() << "Job failed: " << job->errorString() << job->metaObject()->className(); - future.setError(job->error(), job->errorString()); + auto proxyError = translateImapError(job->error()); + future.setError(proxyError, job->errorString()); } else { future.setValue(f(job)); future.setFinished(); @@ -80,21 +96,6 @@ static KAsync::Job runJob(KJob *job, const std::function &f) }); } -static int translateImapError(int error) -{ - switch (error) { - case KJob::UserDefinedError: - return Imap::ConnectionLost; - case KIMAP2::LoginJob::ErrorCode::ERR_HOST_NOT_FOUND: - return Imap::HostNotFoundError; - case KIMAP2::LoginJob::ErrorCode::ERR_COULD_NOT_CONNECT: - return Imap::CouldNotConnectError; - case KIMAP2::LoginJob::ErrorCode::ERR_SSL_HANDSHAKE_FAILED: - return Imap::SslHandshakeError; - } - return Imap::UnknownError; -} - static KAsync::Job runJob(KJob *job) { return KAsync::start([job](KAsync::Future &future) { -- cgit v1.2.3