public void ClearSessionCache() { if (!IsSessionCacheEmpty) { ImapSessionCache.Clear(); _lastTimeCacheWasCleared = DateTime.UtcNow; } }
private void UpdateSessionCache(IIMapServerSettings setting) { if (!ImapSessionCache.ContainsKey(setting)) // Add if session doesn't already exist { ImapSessionCache.TryAdd(setting, _imapMailReader.CreateConnection(setting)); } else { RefreshSessionIfExpired(setting); } }
private void RefreshSessionIfExpired(IIMapServerSettings setting) { var session = ImapSessionCache.FirstOrDefault(s => s.Key == setting).Value; if (session != null && !session.IsConnected()) { IImapMailReader removed; if (ImapSessionCache.TryRemove(setting, out removed) && removed != null) { ImapSessionCache.TryAdd(setting, _imapMailReader.CreateConnection(setting)); } } }
public List <InboxMessageWrapper> GetUnreadInboxMails(int messageCount) { var activeImapSessions = ImapSessionCache.Where(session => session.Value.HasUnreadMail()).ToArray(); _currentlyRetrievingEmails = activeImapSessions.Any(); var retrievedEmails = new List <InboxMessageWrapper>(); foreach (var session in activeImapSessions) { foreach (var unreadMail in session.Value.GetUnreadMails("INBOX", messageCount)) { retrievedEmails.Add(new InboxMessageWrapper { ImapSetting = session.Key, Message = unreadMail }); } } ; return(retrievedEmails); }