diff options
Diffstat (limited to 'src/vmime/net')
-rw-r--r-- | src/vmime/net/imap/IMAPConnection.cpp | 7 | ||||
-rw-r--r-- | src/vmime/net/imap/IMAPParser.hpp | 33 |
2 files changed, 36 insertions, 4 deletions
diff --git a/src/vmime/net/imap/IMAPConnection.cpp b/src/vmime/net/imap/IMAPConnection.cpp index 0bde327b..57f2ff5e 100644 --- a/src/vmime/net/imap/IMAPConnection.cpp +++ b/src/vmime/net/imap/IMAPConnection.cpp @@ -72,6 +72,9 @@ IMAPConnection::IMAPConnection(shared_ptr <IMAPStore> store, shared_ptr <securit m_secured(false), m_firstTag(true), m_capabilitiesFetched(false), m_noModSeq(false) { m_tag = make_shared <IMAPTag>(); + + m_parser = make_shared <IMAPParser>(); + m_parser->setTag(m_tag); } @@ -135,7 +138,8 @@ void IMAPConnection::connect() m_socket->connect(address, port); - m_parser = make_shared <IMAPParser>(m_tag, m_socket, m_timeoutHandler); + m_parser->setSocket(m_socket); + m_parser->setTimeoutHandler(m_timeoutHandler); setState(STATE_NON_AUTHENTICATED); @@ -808,6 +812,7 @@ shared_ptr <const socket> IMAPConnection::getSocket() const void IMAPConnection::setSocket(shared_ptr <socket> sok) { m_socket = sok; + m_parser->setSocket(sok); } diff --git a/src/vmime/net/imap/IMAPParser.hpp b/src/vmime/net/imap/IMAPParser.hpp index 88f63c64..ba0ea195 100644 --- a/src/vmime/net/imap/IMAPParser.hpp +++ b/src/vmime/net/imap/IMAPParser.hpp @@ -237,23 +237,50 @@ class VMIME_EXPORT IMAPParser : public object { public: - IMAPParser(weak_ptr <IMAPTag> tag, weak_ptr <socket> sok, weak_ptr <timeoutHandler> _timeoutHandler) - : m_tag(tag), m_socket(sok), m_progress(NULL), m_strict(false), - m_literalHandler(NULL), m_timeoutHandler(_timeoutHandler) + IMAPParser() + : m_tag(), m_socket(), m_progress(NULL), m_strict(false), + m_literalHandler(NULL), m_timeoutHandler() { } + /** Set the tag currently used by this parser. + * + * @param tag IMAP command tag + */ + void setTag(shared_ptr <IMAPTag> tag) + { + m_tag = tag; + } + + /** Return the tag currently used by this parser. + * + * @return IMAP command tag + */ shared_ptr <const IMAPTag> getTag() const { return m_tag.lock(); } + /** Set the socket currently used by this parser to receive data + * from server. + * + * @param sok socket + */ void setSocket(shared_ptr <socket> sok) { m_socket = sok; } + /** Set the timeout handler currently used by this parser. + * + * @param toh timeout handler + */ + void setTimeoutHandler(shared_ptr <timeoutHandler> toh) + { + m_timeoutHandler = toh; + } + /** Set whether we operate in strict mode (this may not work * with some servers which are not fully standard-compliant). * |