// Token: 0x06000916 RID: 2326 RVA: 0x0003D3DC File Offset: 0x0003B5DC protected override void OnPerforming(long cookie) { using (base.Context.CreateReadLock()) { if (base.ShouldContinue(cookie)) { if (NotificationFactories.Instance.IsSummaryEnabled(base.Context.Settings)) { ExDateTime exDateTime = base.ExpectedTime.Date + base.Context.Settings.Text.TextNotification.CalendarNotificationSettings.SummarySettings.NotifyingTimeInDay.TimeOfDay; ExDateTime exDateTime2 = exDateTime + TimeSpan.FromDays(base.Context.Settings.Text.TextNotification.CalendarNotificationSettings.SummarySettings.Duration.Interval); try { using (MailboxSession mailboxSession = MailboxSession.OpenAsSystemService(ExchangePrincipal.FromLocalServerMailboxGuid(base.Context.Settings.GetADSettings(), base.Context.DatabaseGuid, base.Context.MailboxGuid), CultureInfo.InvariantCulture, "Client=TBA;Action=ReloadReminders")) { if (base.ShouldContinue(cookie)) { IList <CalendarInfo> list = SummaryLoader.Load(base.ExpectedTime, base.Context.Settings.TimeZone.ExTimeZone, mailboxSession, base.Context.DefaultCalendarFolderId, null, exDateTime, exDateTime2); if (0 < list.Count && base.ShouldContinue(cookie)) { new TextNotificationFactory.TextMessagingEmitter(base.Context).Emit(mailboxSession, CalendarNotificationType.Summary, list); } } } } finally { if (base.ShouldContinue(cookie)) { CalendarNotificationInitiator.ScheduleAction(new SummaryGenerating(exDateTime, exDateTime2, base.Context), base.GetType().Name); } } } } } }
// Token: 0x0600097B RID: 2427 RVA: 0x0003F950 File Offset: 0x0003DB50 public static void InitiateEmittingReminder(ExDateTime now, MailboxData mailboxData) { if (NotificationFactories.Instance.IsReminderEnabled(mailboxData.Settings)) { CalendarNotificationInitiator.ScheduleAction(new ReminderReloading(now, mailboxData), "InitiateEmittingReminder"); } }
// Token: 0x060008F5 RID: 2293 RVA: 0x0003C82C File Offset: 0x0003AA2C protected override void OnPerforming(long cookie) { bool flag = false; ThreadPriority priority = Thread.CurrentThread.Priority; try { Thread.CurrentThread.Priority = ThreadPriority.Lowest; if (base.ShouldContinue(cookie)) { this.InitializeUserSettings(cookie); if (base.ShouldContinue(cookie)) { this.SyncTextMessagingStates(cookie); flag = true; } } } catch (TransientMailboxException) { ExTraceGlobals.AssistantTracer.TraceError((long)this.GetHashCode(), "TransientMailboxException in Initiating.OnPerforming()"); } finally { if (!flag && !base.ShouldContinue(cookie)) { CalendarNotificationInitiator.ScheduleAction(new Initiating(base.ExpectedTime + Initiating.RetryInterval, base.Context), "retrying to initiate database"); } Thread.CurrentThread.Priority = priority; } }
// Token: 0x06000913 RID: 2323 RVA: 0x0003D118 File Offset: 0x0003B318 protected override void OnPerforming(long cookie) { using (base.Context.CreateReadLock()) { if (!base.ShouldContinue(cookie)) { ExTraceGlobals.AssistantTracer.TraceDebug((long)this.GetHashCode(), "Didn't perform reminder reloading because of cookie"); } else if (!NotificationFactories.Instance.IsReminderEnabled(base.Context.Settings)) { ExTraceGlobals.AssistantTracer.TraceDebug((long)this.GetHashCode(), "Didn't perform reminder reloading because user hasn't enabled reminder"); } else { ExDateTime expectedTime = base.ExpectedTime; ExDateTime exDateTime = expectedTime + TimeSpan.FromDays(1.0); ExDateTime expectedTime2 = exDateTime; string name = base.GetType().Name; try { ExTraceGlobals.AssistantTracer.TraceDebug <string, string>((long)this.GetHashCode(), "Start Reminder Reloading at {0}, {1}", expectedTime.ToShortDateString(), expectedTime.ToLongTimeString()); ExchangePrincipal mailboxOwner = ExchangePrincipal.FromLocalServerMailboxGuid(base.Context.Settings.GetADSettings(), base.Context.DatabaseGuid, base.Context.MailboxGuid); using (MailboxSession mailboxSession = MailboxSession.OpenAsSystemService(mailboxOwner, CultureInfo.InvariantCulture, "Client=TBA;Action=ReloadReminders")) { if (!base.ShouldContinue(cookie)) { ExTraceGlobals.AssistantTracer.TraceDebug((long)this.GetHashCode(), "Didn't perform reminder reloading because of cookie"); } else { foreach (CalendarInfo calendarInfo in ReminderLoader.Load(base.ExpectedTime, base.Context.Settings.TimeZone.ExTimeZone, mailboxSession, base.Context.DefaultCalendarFolderId, null, expectedTime, exDateTime)) { if (!base.ShouldContinue(cookie)) { ExTraceGlobals.AssistantTracer.TraceDebug((long)this.GetHashCode(), "Didn't perform reminder reloading because of cookie"); break; } expectedTime2 = calendarInfo.ReminderTime + TimeSpan.FromTicks(1L); ReminderEmitting action; if (NotificationFactories.Instance.TryCreateReminderEmitting(calendarInfo, base.Context, out action)) { CalendarNotificationInitiator.ScheduleAction(action, name); } } } } } finally { if (base.ShouldContinue(cookie)) { ExTraceGlobals.AssistantTracer.TraceDebug <string, string>((long)this.GetHashCode(), "The next reminder reloading is scheduled at {0}, {1}", expectedTime2.ToShortDateString(), expectedTime2.ToLongTimeString()); CalendarNotificationInitiator.ScheduleAction(new ReminderReloading(expectedTime2, base.Context), name); } } } } }
// Token: 0x0600097C RID: 2428 RVA: 0x0003F978 File Offset: 0x0003DB78 public static void InitiateEmittingSummary(ExDateTime now, MailboxData mailboxData) { if (!NotificationFactories.Instance.IsSummaryEnabled(mailboxData.Settings)) { return; } ExDateTime exDateTime = now.Date + mailboxData.Settings.Text.TextNotification.DailyAgendaNotificationSendTime; ExDateTime startTime = now; if (exDateTime < now) { startTime = exDateTime; exDateTime += TimeSpan.FromDays((double)mailboxData.Settings.Text.TextNotification.NextDays); } CalendarNotificationInitiator.ScheduleAction(new SummaryGenerating(startTime, exDateTime, mailboxData), "InitiateEmittingSummary"); }
// Token: 0x06000983 RID: 2435 RVA: 0x0003FC84 File Offset: 0x0003DE84 public void Initiate(DatabaseInfo databaseInfo) { if (CalendarNotificationInitiator.stateOfSettingsChangeListener == 0 && Interlocked.CompareExchange(ref CalendarNotificationInitiator.stateOfSettingsChangeListener, 1, 0) == 0) { SettingsChangeListener.Instance.UserSettingsChanged += CalendarNotificationInitiator.SettingsChangedEventHandler; } bool flag = false; lock (CalendarNotificationInitiator.initiatedDatabaseGuids) { if (!CalendarNotificationInitiator.initiatedDatabaseGuids.ContainsKey(databaseInfo.Guid)) { CalendarNotificationInitiator.initiatedDatabaseGuids[databaseInfo.Guid] = databaseInfo; flag = true; } } if (flag) { CalendarNotificationInitiator.ScheduleAction(new Initiating(ExDateTime.Now, databaseInfo), "initiating database"); } }
// Token: 0x06000927 RID: 2343 RVA: 0x0003DEC0 File Offset: 0x0003C0C0 private static void HandleMeetingEvent(ExDateTime eventTime, MailboxData mailboxData, MapiEvent mapiEvent, MailboxSession itemStore, StoreObject item) { if (item == null || !NotificationFactories.Instance.IsInterestedInCalendarMeetingEvent(mailboxData.Settings)) { ExTraceGlobals.AssistantTracer.TraceDebug <MailboxData, MapiEvent>((long)typeof(CalendarChangeProcessor).GetHashCode(), "Ignore event because update is disabled for user {0}, event: {1}", mailboxData, mapiEvent); return; } if (object.Equals(item.Id.ObjectId, mailboxData.DefaultDeletedItemsFolderId) || object.Equals(item.Id.ObjectId, mailboxData.DefaultJunkEmailFolderId)) { ExTraceGlobals.AssistantTracer.TraceDebug <MailboxData, MapiEvent>((long)typeof(CalendarChangeProcessor).GetHashCode(), "Ignore event because item has been deleted for user {0}, event: {1}", mailboxData, mapiEvent); return; } MeetingMessage meetingMessage = item as MeetingMessage; if (meetingMessage == null) { ExTraceGlobals.AssistantTracer.TraceDebug <MailboxData, MapiEvent>((long)typeof(CalendarChangeProcessor).GetHashCode(), "Meeting event handler could do nothing because the item is not meeting message for user {0}, event: {1}", mailboxData, mapiEvent); return; } if (meetingMessage.IsDelegated() || meetingMessage.IsMailboxOwnerTheSender() || meetingMessage.IsOutOfDate()) { ExTraceGlobals.AssistantTracer.TraceDebug <MailboxData, MapiEvent>((long)typeof(CalendarChangeProcessor).GetHashCode(), "Ignore event because mtg is delegated or out of data or is ornizer for user {0}, event: {1}", mailboxData, mapiEvent); return; } CalendarNotificationType calendarNotificationType = CalendarChangeProcessor.AnalyzeEvent(mapiEvent, meetingMessage); if (calendarNotificationType == CalendarNotificationType.Uninteresting) { ExTraceGlobals.AssistantTracer.TraceDebug <MailboxData, MapiEvent>((long)typeof(CalendarChangeProcessor).GetHashCode(), "Ignore mtg event due to uninteresting for user {0}, event: {1}", mailboxData, mapiEvent); return; } List <CalendarInfo> list = null; Interval <ExDateTime> interval = new Interval <ExDateTime>(eventTime, false, eventTime + TimeSpan.FromDays((double)mailboxData.Settings.Text.TextNotification.NextDays), true); CalendarItemBase calendarItemBase = null; try { calendarItemBase = meetingMessage.GetCorrelatedItem(); if (!meetingMessage.TryUpdateCalendarItem(ref calendarItemBase, false)) { ExTraceGlobals.AssistantTracer.TraceDebug <MailboxData, MapiEvent>((long)typeof(CalendarChangeProcessor).GetHashCode(), "Ignore mtg event because TryUpdateCalendarItem failed for user {0}, event: {1}", mailboxData, mapiEvent); return; } list = OccurrenceLoader.Load(eventTime, mailboxData.Settings.TimeZone.ExTimeZone, itemStore, meetingMessage as MeetingRequest, calendarItemBase, mailboxData.Settings.Text.TextNotification.CalendarNotificationSettings.UpdateSettings.Duration.NonWorkHoursExcluded ? mailboxData.Settings.Text.WorkingHours : null, interval.Minimum, interval.Maximum); } finally { if (calendarItemBase != null) { calendarItemBase.Dispose(); calendarItemBase = null; } } int num = 0; foreach (CalendarInfo calendarInfo in list) { if (calendarInfo.IsInteresting(calendarNotificationType)) { CalendarNotificationInitiator.ScheduleAction(new UpdateEmitting(mailboxData, calendarInfo, calendarNotificationType), "HandleMeetingEvent"); num++; } } ExTraceGlobals.AssistantTracer.TraceDebug((long)typeof(CalendarChangeProcessor).GetHashCode(), "{0} updates has been sent according to mtg msg {1} for user {2}, type: {3}, event: {4}", new object[] { num, meetingMessage.Id.ObjectId, mailboxData, calendarNotificationType, mapiEvent }); }
// Token: 0x06000924 RID: 2340 RVA: 0x0003DBB0 File Offset: 0x0003BDB0 private static void UpdateReminderAccordingToChangedUpdate(MailboxData mailboxData, IList <CalendarInfo> calEvents, IList <CalendarInfo> eventsToBeRemoved) { List <CalendarInfo> eventsToBeAdded = new List <CalendarInfo>(calEvents); ExDateTime nextReminderReloadTime = ExDateTime.MinValue; mailboxData.Actions.ForEach(delegate(CalendarNotificationAction action) { if (typeof(ReminderReloading) == action.GetType()) { nextReminderReloadTime = action.ExpectedTime; return; } if (typeof(ReminderEmitting) != action.GetType()) { return; } CalendarInfo calendarInfo2 = ((ReminderEmitting)action).CalendarInfo; IList <CalendarInfo> list = null; CalendarInfo calendarInfo3 = null; if (CalendarChangeProcessor.TryGetMatched(eventsToBeRemoved, calendarInfo2.CalendarItemIdentity, calendarInfo2.CalendarItemOccurrenceIdentity, true, out list, out calendarInfo3) && calendarInfo3 != null) { CalendarNotificationInitiator.CompleteAction(action, "UpdateReminderAccordingToChangedUpdate"); } list = null; calendarInfo3 = null; if (CalendarChangeProcessor.TryGetMatched(eventsToBeAdded, calendarInfo2.CalendarItemIdentity, calendarInfo2.CalendarItemOccurrenceIdentity, true, out list, out calendarInfo3)) { eventsToBeAdded.Remove(calendarInfo3); ReminderEmitting action3; if (!calendarInfo3.ReminderIsSet || !calendarInfo3.IsInteresting(CalendarNotificationType.ChangedUpdate) || calendarInfo3.ReminderTime < calendarInfo3.CreationRequestTime || !NotificationFactories.Instance.TryCreateReminderEmitting(calendarInfo3, action.Context, out action3)) { CalendarNotificationInitiator.CompleteAction(action, "UpdateReminderAccordingToChangedUpdate"); return; } CalendarNotificationInitiator.UpdateAction(action, action3, "UpdateReminderAccordingToChangedUpdate"); } }); foreach (CalendarInfo calendarInfo in eventsToBeAdded) { if (calendarInfo.ReminderIsSet) { if (calendarInfo.ReminderTime < calendarInfo.CreationRequestTime) { ExTraceGlobals.AssistantTracer.TraceDebug((long)typeof(CalendarChangeProcessor).GetHashCode(), "Reminder is out of date, subj: {0}, usr: {1}, event_t: {2}, rmd_t: {3}, s_t: {4}, e_t: {5}", new object[] { calendarInfo.NormalizedSubject, mailboxData.Settings.LegacyDN, calendarInfo.CreationRequestTime, calendarInfo.ReminderTime, calendarInfo.StartTime, calendarInfo.EndTime }); } else if (nextReminderReloadTime == ExDateTime.MinValue || calendarInfo.ReminderTime <= nextReminderReloadTime) { ReminderEmitting action2; if (NotificationFactories.Instance.TryCreateReminderEmitting(calendarInfo, mailboxData, out action2)) { CalendarNotificationInitiator.ScheduleAction(action2, "UpdateReminderAccordingToChangedUpdate"); } } else { ExTraceGlobals.AssistantTracer.TraceDebug <ExDateTime, ExDateTime>((long)typeof(CalendarChangeProcessor).GetHashCode(), "We didn't process this event because reminderTime {0} is greater nextReminderReloadTime {1}. ", calendarInfo.ReminderTime, nextReminderReloadTime); } } } }