summaryrefslogtreecommitdiffstats
path: root/libmail/smap.H
diff options
context:
space:
mode:
Diffstat (limited to 'libmail/smap.H')
-rw-r--r--libmail/smap.H86
1 files changed, 86 insertions, 0 deletions
diff --git a/libmail/smap.H b/libmail/smap.H
new file mode 100644
index 0000000..9a5a5de
--- /dev/null
+++ b/libmail/smap.H
@@ -0,0 +1,86 @@
+/*
+** Copyright 2003, Double Precision Inc.
+**
+** See COPYING for distribution information.
+*/
+#ifndef libmail_smap_H
+#define libmail_smap_H
+
+#include "libmail_config.h"
+#include "mail.H"
+#include "imap.H"
+
+#include <vector>
+
+LIBMAIL_START
+
+class smapHandler : public imapHandler {
+
+protected:
+ mail::callback *defaultCB;
+
+ void timedOut(const char *errmsg);
+
+ bool doDestroy;
+
+public:
+ smapHandler(int timeoutValArg=0);
+ virtual ~smapHandler();
+
+ int process(imap &imapAccount, std::string &buffer);
+
+ int singleLineProcess(imap &imapAccount, std::string &buffer);
+ int multiLineProcessDotStuffed(imap &, std::string &);
+ int multiLineProcessBinary(imap &, std::string &);
+
+ virtual bool processLine(imap &imapAccount,
+ std::vector<const char *> &words);
+
+ virtual void beginProcessData(imap &imapAccount,
+ std::vector<const char *> &words,
+ unsigned long estimatedSize);
+ virtual void processData(imap &imapAccount,
+ std::string data);
+ virtual void endData(imap &imapAccount);
+
+ virtual bool ok(std::string);
+ virtual bool fail(std::string);
+
+ virtual void existsOrExpungeSeen();
+ // Some subclasses want to know if an EXISTS or EXPUNGE was received
+
+ virtual void fetchedMessageSize(size_t msgNum,
+ unsigned long bytes);
+
+ virtual void fetchedInternalDate(size_t msgNum,
+ time_t internalDate);
+ virtual void fetchedIndexInfo();
+
+ virtual void messagesRemoved(std::vector< std::pair<size_t, size_t> >
+ &removedList);
+ virtual void messageChanged(size_t msgNum);
+
+ static std::string words2path(std::vector<const char *> &);
+
+ static void path2words(std::string, std::vector<std::string> &);
+
+ static void commaSplit(std::string, std::vector<std::string> &);
+
+ void reportProgress(size_t bytesCompleted,
+ size_t bytesEstimatedTotal,
+
+ size_t messagesCompleted,
+ size_t messagesEstimatedTotal)
+ {
+ if (defaultCB)
+ defaultCB->reportProgress(bytesCompleted,
+ bytesEstimatedTotal,
+ messagesCompleted,
+ messagesEstimatedTotal);
+ }
+
+};
+
+LIBMAIL_END
+
+#endif