aboutsummaryrefslogtreecommitdiffstats
path: root/src/net/pop3/POP3Message.cpp
diff options
context:
space:
mode:
authorVincent Richard <[email protected]>2012-12-06 10:02:31 +0000
committerVincent Richard <[email protected]>2012-12-06 10:02:31 +0000
commit1ba5e8698cb0f3904fc7a1faf50597bc877b5099 (patch)
tree1b8b99a6bb147c7f6de31c4f242d7cf4aa240003 /src/net/pop3/POP3Message.cpp
parentFixed progression notification when message size is lower than 64K. (diff)
downloadvmime-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.cpp19
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);