summaryrefslogtreecommitdiffstats
path: root/examples/imapresource
diff options
context:
space:
mode:
authorChristian Mollekopf <chrigi_1@fastmail.fm>2017-08-28 21:21:44 -0600
committerChristian Mollekopf <chrigi_1@fastmail.fm>2017-08-28 21:21:44 -0600
commitbe19bfef2d04943aa17b3f719f50f34f647c4eeb (patch)
tree9663dcdf0e6039833feea5d624da17ff9471816f /examples/imapresource
parentdd2d4263459c12b9ca65a23711f5f77fe34fef1b (diff)
downloadsink-be19bfef2d04943aa17b3f719f50f34f647c4eeb.tar.gz
sink-be19bfef2d04943aa17b3f719f50f34f647c4eeb.zip
Translate the error in both runJob overloads.
Diffstat (limited to 'examples/imapresource')
-rw-r--r--examples/imapresource/imapserverproxy.cpp33
1 files 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";
61const char* Imap::Capabilities::Uidplus = "UIDPLUS"; 61const char* Imap::Capabilities::Uidplus = "UIDPLUS";
62const char* Imap::Capabilities::Condstore = "CONDSTORE"; 62const char* Imap::Capabilities::Condstore = "CONDSTORE";
63 63
64static int translateImapError(int error)
65{
66 switch (error) {
67 case KJob::UserDefinedError:
68 return Imap::ConnectionLost;
69 case KIMAP2::LoginJob::ErrorCode::ERR_HOST_NOT_FOUND:
70 return Imap::HostNotFoundError;
71 case KIMAP2::LoginJob::ErrorCode::ERR_COULD_NOT_CONNECT:
72 return Imap::CouldNotConnectError;
73 case KIMAP2::LoginJob::ErrorCode::ERR_SSL_HANDSHAKE_FAILED:
74 return Imap::SslHandshakeError;
75 }
76 return Imap::UnknownError;
77}
78
64template <typename T> 79template <typename T>
65static KAsync::Job<T> runJob(KJob *job, const std::function<T(KJob*)> &f) 80static KAsync::Job<T> runJob(KJob *job, const std::function<T(KJob*)> &f)
66{ 81{
@@ -69,7 +84,8 @@ static KAsync::Job<T> runJob(KJob *job, const std::function<T(KJob*)> &f)
69 SinkTrace() << "Job done: " << job->metaObject()->className(); 84 SinkTrace() << "Job done: " << job->metaObject()->className();
70 if (job->error()) { 85 if (job->error()) {
71 SinkWarning() << "Job failed: " << job->errorString() << job->metaObject()->className(); 86 SinkWarning() << "Job failed: " << job->errorString() << job->metaObject()->className();
72 future.setError(job->error(), job->errorString()); 87 auto proxyError = translateImapError(job->error());
88 future.setError(proxyError, job->errorString());
73 } else { 89 } else {
74 future.setValue(f(job)); 90 future.setValue(f(job));
75 future.setFinished(); 91 future.setFinished();
@@ -80,21 +96,6 @@ static KAsync::Job<T> runJob(KJob *job, const std::function<T(KJob*)> &f)
80 }); 96 });
81} 97}
82 98
83static int translateImapError(int error)
84{
85 switch (error) {
86 case KJob::UserDefinedError:
87 return Imap::ConnectionLost;
88 case KIMAP2::LoginJob::ErrorCode::ERR_HOST_NOT_FOUND:
89 return Imap::HostNotFoundError;
90 case KIMAP2::LoginJob::ErrorCode::ERR_COULD_NOT_CONNECT:
91 return Imap::CouldNotConnectError;
92 case KIMAP2::LoginJob::ErrorCode::ERR_SSL_HANDSHAKE_FAILED:
93 return Imap::SslHandshakeError;
94 }
95 return Imap::UnknownError;
96}
97
98static KAsync::Job<void> runJob(KJob *job) 99static KAsync::Job<void> runJob(KJob *job)
99{ 100{
100 return KAsync::start<void>([job](KAsync::Future<void> &future) { 101 return KAsync::start<void>([job](KAsync::Future<void> &future) {