diff options
author | Vincent Richard <[email protected]> | 2012-12-06 10:02:31 +0000 |
---|---|---|
committer | Vincent Richard <[email protected]> | 2012-12-06 10:02:31 +0000 |
commit | 1ba5e8698cb0f3904fc7a1faf50597bc877b5099 (patch) | |
tree | 1b8b99a6bb147c7f6de31c4f242d7cf4aa240003 /src/net/pop3/POP3Message.cpp | |
parent | Fixed progression notification when message size is lower than 64K. (diff) | |
download | vmime-1ba5e8698cb0f3904fc7a1faf50597bc877b5099.tar.gz vmime-1ba5e8698cb0f3904fc7a1faf50597bc877b5099.zip |
Moved POP3 response receiving and parsing to a separate class.
Diffstat (limited to '')
-rw-r--r-- | src/net/pop3/POP3Message.cpp | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/src/net/pop3/POP3Message.cpp b/src/net/pop3/POP3Message.cpp index eb33ddca..59b4c443 100644 --- a/src/net/pop3/POP3Message.cpp +++ b/src/net/pop3/POP3Message.cpp @@ -28,10 +28,12 @@ #include "vmime/net/pop3/POP3Message.hpp" +#include "vmime/net/pop3/POP3Response.hpp" #include "vmime/net/pop3/POP3Folder.hpp" #include "vmime/net/pop3/POP3Store.hpp" #include "vmime/utility/outputStreamAdapter.hpp" +#include "vmime/utility/outputStreamStringAdapter.hpp" #include <sstream> @@ -140,12 +142,14 @@ void POP3Message::extract(utility::outputStream& os, std::ostringstream oss; oss << "RETR " << m_num; - folder.constCast <POP3Folder>()->m_store.acquire()->sendRequest(oss.str()); + ref <POP3Store> store = folder.constCast <POP3Folder>()->m_store.acquire(); + + store->sendRequest(oss.str()); try { - folder.constCast <POP3Folder>()->m_store.acquire()-> - readResponse(os, progress, m_size); + POP3Response::readLargeResponse + (store->m_socket, store->m_timeoutHandler, os, progress, m_size); } catch (exceptions::command_error& e) { @@ -197,12 +201,17 @@ void POP3Message::fetch(ref <POP3Folder> msgFolder, const int options) std::ostringstream oss; oss << "TOP " << m_num << " 0"; - folder->m_store.acquire()->sendRequest(oss.str()); + ref <POP3Store> store = folder->m_store.acquire(); + + store->sendRequest(oss.str()); try { string buffer; - folder->m_store.acquire()->readResponse(buffer, true); + utility::outputStreamStringAdapter bufferStream(buffer); + + POP3Response::readLargeResponse(store->m_socket, store->m_timeoutHandler, + bufferStream, /* progress */ NULL, /* predictedSize */ 0); m_header = vmime::create <header>(); m_header->parse(buffer); |