summaryrefslogtreecommitdiffstats
path: root/comm/mailnews/imap/src/nsImapFlagAndUidState.h
diff options
context:
space:
mode:
Diffstat (limited to 'comm/mailnews/imap/src/nsImapFlagAndUidState.h')
-rw-r--r--comm/mailnews/imap/src/nsImapFlagAndUidState.h56
1 files changed, 56 insertions, 0 deletions
diff --git a/comm/mailnews/imap/src/nsImapFlagAndUidState.h b/comm/mailnews/imap/src/nsImapFlagAndUidState.h
new file mode 100644
index 0000000000..b8d2fa2b45
--- /dev/null
+++ b/comm/mailnews/imap/src/nsImapFlagAndUidState.h
@@ -0,0 +1,56 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#ifndef nsImapFlagAndUidState_h___
+#define nsImapFlagAndUidState_h___
+
+#include "MailNewsTypes.h"
+#include "nsIImapFlagAndUidState.h"
+#include "nsImapCore.h"
+#include "nsTArray.h"
+#include "mozilla/Mutex.h"
+
+const int32_t kImapFlagAndUidStateSize = 100;
+
+#include "nsTHashMap.h"
+
+class nsImapFlagAndUidState : public nsIImapFlagAndUidState {
+ public:
+ NS_DECL_THREADSAFE_ISUPPORTS
+ explicit nsImapFlagAndUidState(int numberOfMessages);
+
+ NS_DECL_NSIIMAPFLAGANDUIDSTATE
+
+ int32_t NumberOfDeletedMessages();
+
+ imapMessageFlagsType GetMessageFlagsFromUID(uint32_t uid, bool* foundIt,
+ int32_t* ndx);
+
+ bool IsLastMessageUnseen(void);
+ bool GetPartialUIDFetch() { return fPartialUIDFetch; }
+ void SetPartialUIDFetch(bool isPartial) { fPartialUIDFetch = isPartial; }
+ uint32_t GetHighestNonDeletedUID();
+ uint16_t GetSupportedUserFlags() { return fSupportedUserFlags; }
+ void StartCapture() { fStartCapture = true; }
+ uint32_t GetNumAdded() { return fNumAdded; }
+
+ private:
+ virtual ~nsImapFlagAndUidState();
+
+ nsTArray<nsMsgKey> fUids;
+ nsTArray<imapMessageFlagsType> fFlags;
+ // Hash table, mapping uids to extra flags
+ nsTHashMap<nsUint32HashKey, nsCString> m_customFlagsHash;
+ // Hash table, mapping UID+customAttributeName to customAttributeValue.
+ nsTHashMap<nsCStringHashKey, nsCString> m_customAttributesHash;
+ uint16_t fSupportedUserFlags;
+ int32_t fNumberDeleted;
+ bool fPartialUIDFetch;
+ uint32_t fNumAdded;
+ bool fStartCapture;
+ mozilla::Mutex mLock;
+};
+
+#endif