Modified IMAP parser constructor to make testing easier.
This commit is contained in:
parent
9d73fc5382
commit
cfe9c6b1e7
@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
@ -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).
|
||||
*
|
||||
|
@ -49,8 +49,11 @@ VMIME_TEST_SUITE_BEGIN(IMAPParserTest)
|
||||
"a001 OK Capability completed.\r\n");
|
||||
|
||||
vmime::shared_ptr <vmime::net::imap::IMAPParser> parser =
|
||||
vmime::make_shared <vmime::net::imap::IMAPParser>
|
||||
(tag, vmime::dynamicCast <vmime::net::socket>(socket), toh);
|
||||
vmime::make_shared <vmime::net::imap::IMAPParser>();
|
||||
|
||||
parser->setTag(tag);
|
||||
parser->setSocket(socket);
|
||||
parser->setTimeoutHandler(toh);
|
||||
|
||||
parser->setStrict(false);
|
||||
VASSERT_NO_THROW("non-strict mode", parser->readResponse(/* literalHandler */ NULL));
|
||||
@ -87,8 +90,11 @@ VMIME_TEST_SUITE_BEGIN(IMAPParserTest)
|
||||
socket->localSend("+\r\n");
|
||||
|
||||
vmime::shared_ptr <vmime::net::imap::IMAPParser> parser =
|
||||
vmime::make_shared <vmime::net::imap::IMAPParser>
|
||||
(tag, vmime::dynamicCast <vmime::net::socket>(socket), toh);
|
||||
vmime::make_shared <vmime::net::imap::IMAPParser>();
|
||||
|
||||
parser->setTag(tag);
|
||||
parser->setSocket(socket);
|
||||
parser->setTimeoutHandler(toh);
|
||||
|
||||
parser->setStrict(false);
|
||||
VASSERT_NO_THROW("non-strict mode", parser->readResponse());
|
||||
|
Loading…
Reference in New Issue
Block a user