// Token: 0x060015DB RID: 5595 RVA: 0x0007B110 File Offset: 0x00079310 protected override void OnObjectModified(IMapiEvent mapiEvent, IMailboxSession itemStore, IStoreObject item, List <KeyValuePair <string, object> > customDataToLog) { ExTraceGlobals.GeneralTracer.TraceDebug((long)this.GetHashCode(), "EventTimeBasedInboxReminderProcessor.OnObjectModified"); if (item != null) { ExTraceGlobals.GeneralTracer.TraceDebug((long)this.GetHashCode(), "EventTimeBasedInboxReminderProcessor.OnObjectModified - item exists"); if (!(item is ICalendarItem)) { return; } ICalendarItem calendarItem = (ICalendarItem)item; if (calendarItem.GlobalObjectId == null) { base.Log.LogEntry(itemStore, "EventTimeBasedInboxReminder.OnObjectModified - Calendar item missing GOID", new object[0]); return; } base.Log.LogEntry(itemStore, "EventTimeBasedInboxReminder.OnObjectModified - Start Time:{0}, End Time:{1}", new object[] { calendarItem.StartTime.UniversalTime, calendarItem.EndTime.UniversalTime }); this.DeleteReminderMessages(itemStore, calendarItem, customDataToLog); this.CreateReminderMessages(itemStore, calendarItem, customDataToLog); } }
// Token: 0x060013D9 RID: 5081 RVA: 0x000738DC File Offset: 0x00071ADC private int ResolveUnseenEmailCount(IMapiEvent mapiEvent, List <PushNotificationServerSubscription> subscriptions) { int result; if (!PushNotificationMapiEventAnalyzer.IsIpmFolderContentChangeEvent(mapiEvent)) { long num = this.assistantCache.ReadEmailWatermarkFromCache(mapiEvent.MailboxGuid); long num2 = (subscriptions[0].InboxUnreadCount != null) ? subscriptions[0].InboxUnreadCount.Value : num; if (num <= num2) { result = 1; this.assistantCache.UpdateEmailWatermarkToCache(mapiEvent.MailboxGuid, num - 1L); } else { result = (int)(num - num2); this.assistantCache.UpdateEmailWatermarkToCache(mapiEvent.MailboxGuid, num2); } } else { long num2 = this.assistantCache.ReadEmailWatermarkFromCache(mapiEvent.MailboxGuid); long num = mapiEvent.UnreadItemCount; if (num <= num2) { result = 1; this.assistantCache.UpdateEmailWatermarkToCache(mapiEvent.MailboxGuid, num - 1L); } else { result = (int)(num - num2); } } return(result); }
// Token: 0x060015CE RID: 5582 RVA: 0x0007AC28 File Offset: 0x00078E28 public override bool IsEventInteresting(IMapiEvent mapiEvent) { bool flag = mapiEvent.ItemType == ObjectType.MAPI_MESSAGE; bool flag2 = !base.IsNonIPMFolder(mapiEvent.ExtendedEventFlags); bool flag3 = base.IsModernRemindersModified(mapiEvent.ExtendedEventFlags); bool flag4 = this.IsTypeInteresting(mapiEvent.ObjectClass); bool flag5 = Globals.IsEventOfType(mapiEvent, MapiEventTypeFlags.ObjectModified) && flag3 && flag4; bool flag6 = Globals.IsEventOfType(mapiEvent, MapiEventTypeFlags.ObjectMoved) && flag3 && flag4; bool flag7 = Globals.IsEventOfType(mapiEvent, MapiEventTypeFlags.ObjectDeleted) && flag3 && flag4; bool flag8 = Globals.IsEventOfType(mapiEvent, MapiEventTypeFlags.ObjectCreated) && flag4 && this.IsCreateInteresting; bool flag9 = flag5 || flag6 || flag7 || flag8; ExTraceGlobals.GeneralTracer.TraceDebug((long)this.GetHashCode(), "ModernReminderProcessor.IsEventInteresting - relevantPropertyChange={0}, modified={1}, moved={2}, deleted={3}, created={4}, relevantOperation={5}, relevantItemType={6}, relevantFolder={7}", new object[] { flag3, flag5, flag6, flag7, flag8, flag9, flag, flag2 }); return(flag && flag2 && flag9); }
// Token: 0x06001659 RID: 5721 RVA: 0x0007DEAC File Offset: 0x0007C0AC protected override void OnObjectModified(IMapiEvent mapiEvent, IMailboxSession itemStore, IStoreObject item, List <KeyValuePair <string, object> > customDataToLog) { ExTraceGlobals.GeneralTracer.TraceDebug((long)this.GetHashCode(), "ToDoModernReminderProcessor.OnObjectModified"); if (item != null) { ExTraceGlobals.GeneralTracer.TraceDebug((long)this.GetHashCode(), "ToDoModernReminderProcessor.OnObjectModified - item exists"); IToDoItem toDoItem = (IToDoItem)item; Reminders <ModernReminder> reminders = toDoItem.ModernReminders; if (reminders != null) { ExTraceGlobals.GeneralTracer.TraceDebug((long)this.GetHashCode(), "ToDoModernReminderProcessor.OnObjectModified - Reminders exist -> schedule reminder"); int numRemindersScheduled = 0; customDataToLog.Add(new KeyValuePair <string, object>("ToDoRemSchd.Latency", base.ExecuteAndMeasure(delegate { numRemindersScheduled = this.ReminderMessageManager.ScheduleReminder(itemStore, toDoItem, reminders); }).ToString())); customDataToLog.Add(new KeyValuePair <string, object>("ToDoRemSchd.Count", numRemindersScheduled)); return; } ExTraceGlobals.GeneralTracer.TraceDebug((long)this.GetHashCode(), "ToDoModernReminderProcessor.OnObjectModified - Modern reminders don't exist -> clearing the reminder"); customDataToLog.Add(new KeyValuePair <string, object>("ToDoRemClr.Latency", base.ExecuteAndMeasure(delegate { this.ReminderMessageManager.ClearReminder(itemStore, toDoItem); }).ToString())); } }
// Token: 0x06001426 RID: 5158 RVA: 0x00074498 File Offset: 0x00072698 internal bool IsValidFolderMessageForEmailSubscription(IMapiEvent mapiEvent) { if (!this.IsEmailSubscriptionEnabled(mapiEvent.MailboxGuid)) { return(false); } CachedState cachedState = AssistantsService.CachedObjectsList.GetCachedState(mapiEvent.MailboxGuid); byte[] y; if (!this.TryGetInboxFolderIdFromCache(mapiEvent.MailboxGuid, out y)) { return(false); } if (!ArrayComparer <byte> .Comparer.Equals(mapiEvent.ItemEntryId, y)) { return(false); } long inboxItemCount; using (new PushNotificationDataHandler.CachedStateReadLock(cachedState)) { MailboxData mailboxData = cachedState.State[9] as MailboxData; inboxItemCount = mailboxData.InboxItemCount; if (inboxItemCount != mapiEvent.ItemCount) { using (new PushNotificationDataHandler.CachedStateUpgradeWriteLock(cachedState)) { mailboxData.InboxItemCount = mapiEvent.ItemCount; } } } return(inboxItemCount < mapiEvent.ItemCount && mapiEvent.UnreadItemCount > 0L); }
// Token: 0x060013D4 RID: 5076 RVA: 0x00073581 File Offset: 0x00071781 internal void HandleEvent(IMapiEvent mapiEvent, IMailboxSession session, IStoreObject item) { if (PushNotificationMapiEventAnalyzer.IsSubscriptionChangeEvent(mapiEvent)) { this.HandleSubscriptionChangeEvent(session, item); return; } this.HandleNotificationEvent(mapiEvent, session, item); }
// Token: 0x06001638 RID: 5688 RVA: 0x0007D8EC File Offset: 0x0007BAEC public void HandleEvent(IMapiEvent mapiEvent, IMailboxSession itemStore, IStoreObject item, bool isItemInDumpster, List <KeyValuePair <string, object> > customDataToLog) { this.Log.LogEntry(itemStore, "Event Reminder item received", new object[0]); Stopwatch stopwatch = Stopwatch.StartNew(); this.ReminderMessageManager.ReceivedReminderMessage(itemStore, item); stopwatch.Stop(); customDataToLog.Add(new KeyValuePair <string, object>("RemRcv.Latency", stopwatch.ElapsedMilliseconds.ToString())); }
// Token: 0x060015EC RID: 5612 RVA: 0x0007B4E4 File Offset: 0x000796E4 public void HandleEvent(IMapiEvent mapiEvent, IMailboxSession itemStore, IStoreObject item, bool isItemInDumpster, List <KeyValuePair <string, object> > customDataToLog) { this.Log.LogEntry(itemStore, "Resubmitting reminder messages on MailboxMoveSucceeded", new object[0]); Stopwatch stopwatch = Stopwatch.StartNew(); int num = this.ReminderMessageManager.ResubmitReminderMessages(itemStore); stopwatch.Stop(); customDataToLog.Add(new KeyValuePair <string, object>("Resubmit.Latency", stopwatch.ElapsedMilliseconds.ToString())); customDataToLog.Add(new KeyValuePair <string, object>("Resubmit.Count", num)); }
// Token: 0x060015D5 RID: 5589 RVA: 0x0007ADD8 File Offset: 0x00078FD8 protected override void OnObjectDeleted(IMapiEvent mapiEvent, IMailboxSession itemStore, IStoreObject item, List <KeyValuePair <string, object> > customDataToLog) { ExTraceGlobals.GeneralTracer.TraceDebug((long)this.GetHashCode(), "EmailModernReminderProcessor.OnObjectDeleted"); if (item != null) { ExTraceGlobals.GeneralTracer.TraceDebug((long)this.GetHashCode(), "EmailModernReminderProcessor.OnObjectDeleted - item exists"); IToDoItem messageItem = (IToDoItem)item; this.DeleteReminderMessages(itemStore, messageItem, customDataToLog); } }
// Token: 0x060013D6 RID: 5078 RVA: 0x000736A8 File Offset: 0x000718A8 private void HandleNotificationEvent(IMapiEvent mapiEvent, IMailboxSession session, IStoreObject item) { PushNotificationContext pushNotificationContext = new PushNotificationContext { OriginalTime = ExDateTime.UtcNow }; if (this.assistantCache.ShouldProcessUnseenEmailEvent(session, this.XSOFactory, mapiEvent) && this.PopulateSubscriptionsAndTenantId(mapiEvent, session, pushNotificationContext)) { if (this.assistantCache.IsBackgroundSyncEnabled(mapiEvent.MailboxGuid)) { pushNotificationContext.BackgroundSyncType = BackgroundSyncType.Email; } pushNotificationContext.UnseenEmailCount = new int?(this.ResolveUnseenEmailCount(mapiEvent, pushNotificationContext.Subscriptions)); PushNotificationHelper.LogMailboxNotificationResolution(mapiEvent.MailboxGuid, pushNotificationContext); this.NotificationBatchManager.Add(mapiEvent.MailboxGuid, pushNotificationContext); } }
// Token: 0x060015C5 RID: 5573 RVA: 0x0007AB58 File Offset: 0x00078D58 public void HandleEvent(IMapiEvent mapiEvent, IMailboxSession itemStore, IStoreObject item, bool isItemInDumpster, List <KeyValuePair <string, object> > customDataToLog) { bool flag = Globals.IsEventOfType(mapiEvent, MapiEventTypeFlags.ObjectModified); bool flag2 = Globals.IsEventOfType(mapiEvent, MapiEventTypeFlags.ObjectMoved); bool flag3 = Globals.IsStoreObjectDeleted(mapiEvent, itemStore, isItemInDumpster); bool flag4 = Globals.IsEventOfType(mapiEvent, MapiEventTypeFlags.ObjectCreated); ExAssert.RetailAssert(flag || flag2 || flag3 || flag4, "HandleEvent called for uninteresting event, eventMask={0}", new object[] { mapiEvent.EventMask }); if (flag3) { this.OnObjectDeleted(mapiEvent, itemStore, item, customDataToLog); return; } this.OnObjectModified(mapiEvent, itemStore, item, customDataToLog); }
// Token: 0x060013D3 RID: 5075 RVA: 0x0007351C File Offset: 0x0007171C internal bool IsEventInteresting(IMapiEvent mapiEvent) { if (mapiEvent.ItemType != ObjectType.MAPI_MESSAGE && mapiEvent.ItemType != ObjectType.MAPI_FOLDER) { return(false); } if (PushNotificationMapiEventAnalyzer.IsSubscriptionChangeEvent(mapiEvent)) { return(true); } if (!this.AssistantConfig.IsPublishingEnabled) { return(false); } if (PushNotificationMapiEventAnalyzer.IsNewMessageEvent(mapiEvent)) { return(this.assistantCache.IsCacheUpdateRequiredForEmailSubscription(mapiEvent)); } return(PushNotificationMapiEventAnalyzer.IsIpmFolderContentChangeEvent(mapiEvent) && this.assistantCache.IsValidFolderMessageForEmailSubscription(mapiEvent)); }
// Token: 0x060013D7 RID: 5079 RVA: 0x00073738 File Offset: 0x00071938 private bool PopulateSubscriptionsAndTenantId(IMapiEvent mapiEvent, IMailboxSession session, PushNotificationContext pushNotificationContext) { PushNotificationContext pushNotificationContext2; if (this.NotificationBatchManager.TryGetPushNotification(mapiEvent.MailboxGuid, out pushNotificationContext2)) { pushNotificationContext.Subscriptions = pushNotificationContext2.Subscriptions; pushNotificationContext.TenantId = pushNotificationContext2.TenantId; } else { using (IPushNotificationStorage pushNotificationStorage = this.XSOFactory.FindPushNotificationStorage(session)) { if (pushNotificationStorage != null) { pushNotificationContext.TenantId = pushNotificationStorage.TenantId; pushNotificationContext.Subscriptions = this.ResolveSubscriptions(session, pushNotificationStorage); } } } return(pushNotificationContext.Subscriptions != null && pushNotificationContext.Subscriptions.Count > 0); }
// Token: 0x060015DA RID: 5594 RVA: 0x0007B004 File Offset: 0x00079204 public override bool IsEventInteresting(IMapiEvent mapiEvent) { bool flag = mapiEvent.ItemType == ObjectType.MAPI_MESSAGE; bool flag2 = !base.IsNonIPMFolder(mapiEvent.ExtendedEventFlags); bool flag3 = base.IsModernRemindersModified(mapiEvent.ExtendedEventFlags) || this.IsContentIndexingPropertyModified(mapiEvent.ExtendedEventFlags) || this.IsAppointmentTimeModified(mapiEvent.ExtendedEventFlags); bool flag4 = ObjectClass.IsCalendarItem(mapiEvent.ObjectClass); bool flag5 = Globals.IsEventOfType(mapiEvent, MapiEventTypeFlags.ObjectModified) && flag3; bool flag6 = Globals.IsEventOfType(mapiEvent, MapiEventTypeFlags.ObjectMoved); bool flag7 = Globals.IsEventOfType(mapiEvent, MapiEventTypeFlags.ObjectDeleted); bool flag8 = flag4 && (flag5 || flag6 || flag7); ExTraceGlobals.GeneralTracer.TraceDebug((long)this.GetHashCode(), "EventTimeBasedInboxReminderProcessor.IsEventInteresting - relevantPropertyChange={0}, modified={1}, moved={2}, deleted={3}, relevantOperation={4}, relevantItemType={5}, relevantFolder={6}", new object[] { flag3, flag5, flag6, flag7, flag8, flag, flag2 }); return(flag && flag2 && flag8); }
// Token: 0x060015C4 RID: 5572 public abstract bool IsEventInteresting(IMapiEvent mapiEvent);
// Token: 0x06001440 RID: 5184 RVA: 0x00074D95 File Offset: 0x00072F95 internal static bool IsSubscriptionChangeEvent(IMapiEvent mapiEvent) { return(mapiEvent.ItemType == ObjectType.MAPI_MESSAGE && ObjectClass.IsOfClass(mapiEvent.ObjectClass, "Exchange.PushNotification.Subscription") && (mapiEvent.EventMask.Contains(MapiEventTypeFlags.ObjectCreated) || mapiEvent.EventMask.Contains(MapiEventTypeFlags.ObjectModified))); }
// Token: 0x060015EB RID: 5611 RVA: 0x0007B4C4 File Offset: 0x000796C4 public bool IsEventInteresting(IMapiEvent mapiEvent) { MapiEventTypeFlags mapiEventTypeFlags = MapiEventTypeFlags.MailboxMoveSucceeded; return((mapiEvent.EventMask & mapiEventTypeFlags) == mapiEventTypeFlags); }
// Token: 0x06001441 RID: 5185 RVA: 0x00074DD4 File Offset: 0x00072FD4 internal static bool IsIpmFolderContentChangeEvent(IMapiEvent mapiEvent) { return(mapiEvent.ItemType == ObjectType.MAPI_FOLDER && ObjectClass.IsOfClass(mapiEvent.ObjectClass, "IPF.Note") && mapiEvent.EventMask.Contains(MapiEventTypeFlags.ObjectModified) && mapiEvent.EventFlags.HasFlag(MapiEventFlags.ContentOnly) && mapiEvent.ExtendedEventFlags.Contains((MapiExtendedEventFlags)int.MinValue) && mapiEvent.ItemCount != -1L); }
// Token: 0x060000C9 RID: 201 RVA: 0x00005386 File Offset: 0x00003586 internal static bool IsEventOfType(IMapiEvent mapiEvent, MapiEventTypeFlags eventType) { return((mapiEvent.EventMask & eventType) == eventType); }
// Token: 0x06001432 RID: 5170 RVA: 0x00074864 File Offset: 0x00072A64 internal static void LogHandleEventError(Exception ex, IDatabaseInfo databaseInfo, IMapiEvent mapiEvent) { Globals.Logger.LogEvent(InfoWorkerEventLogConstants.Tuple_ErrorProcessingHandleEvent, ex.ToString(), new object[] { ex.ToString(), (ex.InnerException != null) ? ex.InnerException.ToString() : string.Empty, databaseInfo.DatabaseName, mapiEvent.MailboxGuid }); PushNotificationsCrimsonEvents.AssistantException.Log <string, Guid, string, string>(databaseInfo.DatabaseName, mapiEvent.MailboxGuid, ex.ToTraceString(), string.Empty); ExTraceGlobals.PushNotificationAssistantTracer.TraceError <string, Guid, string>(0L, "Notification for account {2}:{3} failed with error: {0}.", databaseInfo.DatabaseName, mapiEvent.MailboxGuid, ex.ToTraceString()); }
// Token: 0x06001427 RID: 5159 RVA: 0x00074578 File Offset: 0x00072778 internal bool ShouldProcessUnseenEmailEvent(IMailboxSession session, IXSOFactory xsoFactory, IMapiEvent mapiEvent) { if (!this.IsEmailSubscriptionEnabled(mapiEvent.MailboxGuid)) { return(false); } if (PushNotificationMapiEventAnalyzer.IsIpmFolderContentChangeEvent(mapiEvent)) { return(true); } CachedState cachedState = AssistantsService.CachedObjectsList.GetCachedState(session.MailboxGuid); using (new PushNotificationDataHandler.CachedStateReadLock(cachedState)) { if (!(cachedState.State[9] is MailboxData)) { using (new PushNotificationDataHandler.CachedStateUpgradeWriteLock(cachedState)) { if (!(cachedState.State[9] is MailboxData)) { MailboxData mailboxData = new MailboxData(session.MailboxGuid); if (!mailboxData.LoadData(session, xsoFactory)) { return(false); } cachedState.State[9] = mailboxData; return(ArrayComparer <byte> .Comparer.Equals(mapiEvent.ParentEntryId, mailboxData.InboxFolderId)); } } } } return(false); }
// Token: 0x06001425 RID: 5157 RVA: 0x00074468 File Offset: 0x00072668 internal bool IsCacheUpdateRequiredForEmailSubscription(IMapiEvent mapiEvent) { byte[] array; return(this.IsEmailSubscriptionEnabled(mapiEvent.MailboxGuid) && !this.TryGetInboxFolderIdFromCache(mapiEvent.MailboxGuid, out array)); }
// Token: 0x0600165A RID: 5722 RVA: 0x0007DFFF File Offset: 0x0007C1FF protected override void OnObjectDeleted(IMapiEvent mapiEvent, IMailboxSession itemStore, IStoreObject item, List <KeyValuePair <string, object> > customDataToLog) { ExTraceGlobals.GeneralTracer.TraceDebug((long)this.GetHashCode(), "ToDoModernReminderProcessor.OnObjectDeleted"); }
// Token: 0x060015C8 RID: 5576 protected abstract void OnObjectDeleted(IMapiEvent mapiEvent, IMailboxSession itemStore, IStoreObject item, List <KeyValuePair <string, object> > customDataToLog);
// Token: 0x060000CA RID: 202 RVA: 0x00005393 File Offset: 0x00003593 internal static bool IsStoreObjectDeleted(IMapiEvent mapiEvent, MailboxSession mailboxSession, IStoreObject storeObject) { return(storeObject == null || Globals.IsStoreObjectDeleted(mapiEvent, mailboxSession, Globals.IsItemInDumpster(mailboxSession, storeObject))); }
// Token: 0x06001637 RID: 5687 RVA: 0x0007D8B0 File Offset: 0x0007BAB0 public bool IsEventInteresting(IMapiEvent mapiEvent) { return((mapiEvent.EventMask & MapiEventTypeFlags.ObjectCreated) == MapiEventTypeFlags.ObjectCreated && ((mapiEvent.ExtendedEventFlags & MapiExtendedEventFlags.NonIPMFolder) == MapiExtendedEventFlags.None && mapiEvent.ItemType == ObjectType.MAPI_MESSAGE) && ObjectClass.IsOfClass(mapiEvent.ObjectClass, "IPM.Note.Reminder.Event")); }
// Token: 0x060000CB RID: 203 RVA: 0x000053A8 File Offset: 0x000035A8 internal static bool IsStoreObjectDeleted(IMapiEvent mapiEvent, IMailboxSession mailboxSession, bool isStoreObjectInDumpster) { return(isStoreObjectInDumpster || Globals.IsEventOfType(mapiEvent, MapiEventTypeFlags.ObjectDeleted) || (Globals.IsEventOfType(mapiEvent, MapiEventTypeFlags.ObjectMoved) && Globals.IsDeletedItemsFolder(mailboxSession, mapiEvent.ParentEntryId))); }
// Token: 0x060000EE RID: 238 RVA: 0x00005A52 File Offset: 0x00003C52 private static bool IsAnInterestingContact(IMapiEvent mapiEvent) { return((mapiEvent.EventMask & (MapiEventTypeFlags.ObjectCreated | MapiEventTypeFlags.ObjectDeleted | MapiEventTypeFlags.ObjectModified | MapiEventTypeFlags.ObjectMoved)) != (MapiEventTypeFlags)0 && ObjectClass.IsContact(mapiEvent.ObjectClass)); }
// Token: 0x06001442 RID: 5186 RVA: 0x00074E48 File Offset: 0x00073048 internal static bool IsNewMessageEvent(IMapiEvent mapiEvent) { return(mapiEvent.ItemType == ObjectType.MAPI_MESSAGE && ObjectClass.IsOfClass(mapiEvent.ObjectClass, "IPM.Note") && mapiEvent.EventMask.Contains(MapiEventTypeFlags.ObjectCreated) && !mapiEvent.EventFlags.HasFlag(MapiEventFlags.SearchFolder) && mapiEvent.ExtendedEventFlags.Contains((MapiExtendedEventFlags)int.MinValue)); }