// Token: 0x06000FA2 RID: 4002 RVA: 0x00061B7C File Offset: 0x0005FD7C public void SubscribeForFolderContentChanges(MailboxSession sessionIn, OwaStoreObjectId contextFolderId, OwaStoreObjectId dataFolderId, QueryResult queryResult, ListViewContents2 listView, PropertyDefinition[] subscriptionProperties, Dictionary <PropertyDefinition, int> propertyMap, SortBy[] sortBy, FolderVirtualListViewFilter folderFilter, bool isConversationView) { MailboxSession mailboxSession = this.userContext.MailboxSession; this.SubscribeForFolderChanges(contextFolderId, sessionIn); if (queryResult == null) { return; } if (sessionIn == mailboxSession) { FolderContentChangeNotificationHandler folderContentChangeNotificationHandler = null; this.folderContentChangeNotificationHandlers.TryGetValue(contextFolderId, out folderContentChangeNotificationHandler); if (folderContentChangeNotificationHandler != null && folderContentChangeNotificationHandler.NeedReinitSubscriptions) { this.RemoveFolderContentChangeSubscription(contextFolderId); folderContentChangeNotificationHandler = null; } if (folderContentChangeNotificationHandler == null) { this.ClearOldFolderContentChangeSubscriptions(); this.InitializeConnectionDroppedHandler(); folderContentChangeNotificationHandler = new FolderContentChangeNotificationHandler(this.userContext, mailboxSession, contextFolderId, dataFolderId, queryResult, this.omnhLoggedUser.EmailPayload, listView, subscriptionProperties, propertyMap, sortBy, folderFilter, isConversationView); try { if (!folderContentChangeNotificationHandler.TrySubscribe(this.connectionDroppedNotificationHandler)) { ExTraceGlobals.NotificationsCallTracer.TraceError((long)this.GetHashCode(), "Failed to create a folder content change subscription."); folderContentChangeNotificationHandler.Dispose(); folderContentChangeNotificationHandler = null; return; } this.folderContentChangeNotificationHandlers[contextFolderId] = folderContentChangeNotificationHandler; folderContentChangeNotificationHandler = null; return; } finally { if (folderContentChangeNotificationHandler != null) { folderContentChangeNotificationHandler.Dispose(); folderContentChangeNotificationHandler = null; } } } folderContentChangeNotificationHandler.MissedNotifications = false; } }
// Token: 0x06000FA7 RID: 4007 RVA: 0x00061D7C File Offset: 0x0005FF7C private void RemoveFolderContentChangeSubscription(OwaStoreObjectId folderId) { FolderContentChangeNotificationHandler folderContentChangeNotificationHandler = this.GetFolderContentChangeNotificationHandler(folderId); if (folderContentChangeNotificationHandler != null) { folderContentChangeNotificationHandler.RemoveSubscription(this.connectionDroppedNotificationHandler); folderContentChangeNotificationHandler.Dispose(); this.folderContentChangeNotificationHandlers.Remove(folderId); } }
// Token: 0x06000FA8 RID: 4008 RVA: 0x00061DB8 File Offset: 0x0005FFB8 private void RemoveAllFolderContentChangeSubscriptions() { foreach (OwaStoreObjectId contextFolderId in this.folderContentChangeNotificationHandlers.Keys) { FolderContentChangeNotificationHandler folderContentChangeNotificationHandler = this.GetFolderContentChangeNotificationHandler(contextFolderId); if (folderContentChangeNotificationHandler != null) { folderContentChangeNotificationHandler.RemoveSubscription(this.connectionDroppedNotificationHandler); folderContentChangeNotificationHandler.Dispose(); } } this.folderContentChangeNotificationHandlers.Clear(); this.folderContentChangeNotificationHandlers = null; }