Show IMAPRegexParser.h syntax highlighted
#ifndef IMAP_REGEX_PARSER
#define IMAP_REGEX_PARSER
#ifdef CWDEBUG
#include "sys.h"
#include "debug.h"
#endif
#include <stdio.h>
#include <stdlib.h>
#include <sys/time.h>
#include <string>
#include <map>
#include <iostream>
#include <exception>
#include <sstream>
#include <IMAPTypes.h>
#include <IMAPParser.h>
namespace IMAP
{
/**
* @see IMAP::IMAPParser for documentation.
*/
class IMAPRegexParser : public IMAPParser, private boost::noncopyable
{
public:
IMAPRegexParser() : mmap(NULL), nexists(0), nrecent(0),
uidvalidity(0) {}
~IMAPRegexParser() {}
ParsingState parseAttributeFetch(std::iostream &i, MessageMap *mm,
ThreadLevelMap *thread_levels, const UIDList &wanted);
ParsingState parseMailboxThreads(std::iostream &i,
ThreadLevelMap *thread_levels, UIDList *uidlist);
ParsingState parseSorting(std::iostream &i, const char *key,
UIDList *mlist);
ParsingState processLogin(std::iostream &i,
const std::string &user, const std::string &password,
const std::string &folder);
ParsingState parseUnseen(std::iostream &i,
UIDList *unseenMessages);
ParsingState parseFolderList(std::iostream &i,
const std::string &base, FolderList *list, bool all = true);
ParsingState parseSubscribe(std::iostream &i,
const std::string &folder,
bool add = true);
ParsingState parseMessageFetch(std::iostream &i, IMAP::IMAPUID uid,
std::ostream &stream);
ParsingState parseMessageAppend(std::iostream &imap,
const std::string &folder, int size, std::istream &source);
ParsingState parseNOOP(std::iostream &i);
ParsingState parseFlagChange(std::iostream &i, const char *flag,
IMAPUID uidv, IMAPUID uid, bool set);
ParsingState parseExpunge(std::iostream &i);
ParsingState parseCopy(std::iostream &i, IMAPUID uidv, IMAPUID uid,
const char *destfolder);
ParsingState parseDeleteFolder(std::iostream &i, const char *folder);
ParsingState parseRenameFolder(std::iostream &i, const char *folder,
const char *destfolder);
ParsingState parseCreateFolder(std::iostream &i, const char *folder);
int getExistsCount() { return nexists; }
int getRecentCount() { return nrecent; }
IMAP::IMAPUID getUIDValidity() { return uidvalidity; }
private:
void parse_message_headers(std::string &headers, IMAP::IMAPUID uid);
bool IMAP::IMAPRegexParser::process_async_update(
const std::string &line);
void absorb_response(std::iostream &i);
void get_response_line(std::iostream &i, std::string &line);
// Gets next line, checks/absorbs universal untagged responses,
// updates state. Returns true if there is more to parse, false
// otherwise.
bool nextLine(std::iostream &i, IMAPParser::ParsingState &state,
std::string &line);
MessageMap *mmap;
u_int32_t nexists;
u_int32_t nrecent;
IMAP::IMAPUID uidvalidity;
};
};
#endif
See more files for this project here