Code Search for Developers
 
 
  

MessageAttributes.h from AlphaMail at Krugle


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

AlphaMail

AlphaMail is an accelerated web mail interface with a C++ middleware layer that is more effective than an IMAP proxy which is a highly scalable (10k+ users). The interface includes modern features, Section 508 compliance, and universal browser support.

Project homepage: http://sourceforge.net/projects/alphamail
Programming language(s): C++,Java,JavaScript,Perl
License: other

  CacheManager.h
  IMAPFolder.h
  IMAPParser.h
  IMAPParserFactory.h
  IMAPRegexParser.h
  IMAPTypes.h
  MessageAttributes.h
  RequestProcessor.h
  Runnable.h
  ThreadCleanup.h
  imap_debug.h
  middleware.h