From 1ba5e8698cb0f3904fc7a1faf50597bc877b5099 Mon Sep 17 00:00:00 2001 From: Vincent Richard Date: Thu, 6 Dec 2012 11:02:31 +0100 Subject: Moved POP3 response receiving and parsing to a separate class. --- src/net/pop3/POP3Message.cpp | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) (limited to 'src/net/pop3/POP3Message.cpp') 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 @@ -140,12 +142,14 @@ void POP3Message::extract(utility::outputStream& os, std::ostringstream oss; oss << "RETR " << m_num; - folder.constCast ()->m_store.acquire()->sendRequest(oss.str()); + ref store = folder.constCast ()->m_store.acquire(); + + store->sendRequest(oss.str()); try { - folder.constCast ()->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 msgFolder, const int options) std::ostringstream oss; oss << "TOP " << m_num << " 0"; - folder->m_store.acquire()->sendRequest(oss.str()); + ref 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
(); m_header->parse(buffer); -- cgit v1.2.3