diff options
Diffstat (limited to 'examples/imapresource/imapserverproxy.cpp')
-rw-r--r-- | examples/imapresource/imapserverproxy.cpp | 33 |
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"; | |||
61 | const char* Imap::Capabilities::Uidplus = "UIDPLUS"; | 61 | const char* Imap::Capabilities::Uidplus = "UIDPLUS"; |
62 | const char* Imap::Capabilities::Condstore = "CONDSTORE"; | 62 | const char* Imap::Capabilities::Condstore = "CONDSTORE"; |
63 | 63 | ||
64 | static 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 | |||
64 | template <typename T> | 79 | template <typename T> |
65 | static KAsync::Job<T> runJob(KJob *job, const std::function<T(KJob*)> &f) | 80 | static 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 | ||
83 | static 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 | |||
98 | static KAsync::Job<void> runJob(KJob *job) | 99 | static 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) { |