1/* 2 * Copyright 2013-2016, Axel Dörfler, axeld@pinc-software.de. 3 * Distributed under the terms of the MIT License. 4 */ 5 6 7/*! This class offers a high level look at an IMAP mailbox. 8*/ 9 10 11#include "IMAPMailbox.h" 12 13 14IMAPMailbox::IMAPMailbox(IMAP::Protocol& protocol, const BString& mailboxName) 15 : 16 fProtocol(protocol), 17 fMailboxName(mailboxName) 18{ 19} 20 21 22IMAPMailbox::~IMAPMailbox() 23{ 24} 25 26 27void 28IMAPMailbox::AddMessageEntry(uint32 index, uint32 uid, uint32 flags, 29 uint32 size) 30{ 31 fMessageEntries.insert( 32 std::make_pair(uid, MessageFlagsAndSize(flags, size))); 33 34 fUIDs.reserve(index + 1); 35 fUIDs[index] = uid; 36} 37 38 39void 40IMAPMailbox::RemoveMessageEntry(uint32 index) 41{ 42 if (index >= fUIDs.size()) 43 return; 44 45 uint32 uid = fUIDs[index]; 46 fMessageEntries.erase(uid); 47 48 fUIDs.erase(fUIDs.begin() + index); 49} 50 51 52uint32 53IMAPMailbox::UIDForIndex(uint32 index) const 54{ 55 if (index >= fUIDs.size()) 56 return 0; 57 58 return fUIDs[index]; 59} 60 61 62uint32 63IMAPMailbox::MessageFlags(uint32 uid) const 64{ 65 MessageEntryMap::const_iterator found = fMessageEntries.find(uid); 66 if (found == fMessageEntries.end()) 67 return 0; 68 69 return found->second.flags; 70} 71 72 73uint32 74IMAPMailbox::MessageSize(uint32 uid) const 75{ 76 MessageEntryMap::const_iterator found = fMessageEntries.find(uid); 77 if (found == fMessageEntries.end()) 78 return 0; 79 80 return found->second.size; 81} 82 83 84uint32 85IMAPMailbox::MessageAdded(const MessageToken& fromToken, const entry_ref& ref) 86{ 87 printf("IMAP: message added %s, uid %" B_PRIu32 "\n", ref.name, 88 fromToken.uid); 89 return fromToken.uid; 90} 91 92 93void 94IMAPMailbox::MessageDeleted(const MessageToken& token) 95{ 96 printf("IMAP: message deleted, uid %" B_PRIu32 "\n", token.uid); 97} 98 99 100void 101IMAPMailbox::MessageFlagsChanged(const MessageToken& token, 102 const entry_ref& ref, uint32 oldFlags, uint32 newFlags) 103{ 104 printf("IMAP: flags changed %s, uid %" B_PRIu32 ", from %" B_PRIx32 " to %" 105 B_PRIx32 "\n", ref.name, token.uid, oldFlags, newFlags); 106} 107