Show MessageAttributes.h syntax highlighted
#ifndef IMAPWEBCACHE_MESSAGEATTRIBUTES
#define IMAPWEBCACHE_MESSAGEATTRIBUTES
#ifdef CWDEBUG
#include "sys.h"
#include "debug.h"
#endif
#include <string>
#include <sstream>
#include <IMAPTypes.h>
#include <IMAPParser.h>
namespace IMAP {
class MessageAttributes
{
public:
const static IMAPFlags None = 0;
const static IMAPFlags Seen = 0x01;
const static IMAPFlags Answered = 0x02;
const static IMAPFlags Flagged = 0x04;
const static IMAPFlags Deleted = 0x08;
const static IMAPFlags Forwarded = 0x10;
MessageAttributes(IMAPUID uid) : _uid(uid), _flags(None),
_to("", 0), _from("", 0),
_date("", 0), _subject("", 0),
_snippet("", 0),
_charset("us-ascii", 8),
_thread_level(0), _size(0) { }
IMAPUID &UID() { return _uid; }
const IMAPUID &UID() const { return _uid; }
std::string getUIDAsString() const {
std::ostringstream s;
s << _uid;
return s.str();
}
std::string getFlagsShortString() const {
std::string tmp("");
if(_flags == None) return tmp;
if(_flags & Seen) tmp += "S";
if(_flags & Deleted) tmp += "D";
if(_flags & Answered) tmp += "R";
if(_flags & Flagged) tmp += "F";
if(_flags & Forwarded) tmp += "W";
return tmp;
}
//std::string getFlagsAsIMAPString();
IMAPFlags &flags() { return _flags; }
u_int8_t &thread_level() { return _thread_level; }
u_int32_t &size() { return _size; }
const IMAPFlags &flags() const { return _flags; }
const u_int8_t &thread_level() const { return _thread_level; }
const u_int32_t &size() const { return _size; }
const std::string &getTo() const { return _to; }
void setTo(const std::string &v) { std::string(v.data(), v.size()).swap(_to); }
const std::string &getFrom() const { return _from; }
void setFrom(const std::string &v) { std::string(v.data(), v.size()).swap(_from); }
const std::string &getDate() const { return _date; }
void setDate(const std::string &v) { std::string(v.data(), v.size()).swap(_date); }
const std::string &getSubject() const { return _subject; }
void setSubject(const std::string &v) { std::string(v.data(), v.size()).swap(_subject); }
const std::string &getSnippet() const { return _snippet; }
void setSnippet(const std::string &v) { std::string(v.data(), v.size()).swap(_snippet); }
const std::string &getCharset() const { return _charset; }
void setCharset(const std::string &v) { std::string(v.data(), v.size()).swap(_charset); }
void setField(const std::string &parseSelector,
const std::string &value)
{
if(parseSelector == IMAPParser::subjectSelector)
setSubject(value);
else if(parseSelector == IMAPParser::toSelector)
setTo(value);
else if(parseSelector == IMAPParser::fromSelector)
setFrom(value);
else if(parseSelector == IMAPParser::dateSelector)
setDate(value);
else if(parseSelector == IMAPParser::charsetSelector)
setCharset(value);
}
u_int32_t getMemoryUsage() {
return sizeof(MessageAttributes) + _to.size() + _from.size() +
_date.size() + _subject.size() + _snippet.size();
}
private:
u_int32_t _size;
IMAPUID _uid;
IMAPFlags _flags;
std::string _to;
std::string _from;
std::string _date;
std::string _subject;
std::string _snippet;
std::string _charset;
u_int8_t _thread_level;
};
};
#endif
See more files for this project here