summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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) {