private IStoreObjectDetails FindModelStoreObjectDetails(IStoreObject item)
        {
            var result = Model.Schemas.FirstOrDefault(x => x.Schema == item) as IStoreObjectDetails ??
                         Model.Queries.FirstOrDefault(x => x.Query == item) as IStoreObjectDetails ??
                         Model.Forms.FirstOrDefault(x => x.Form == item) as IStoreObjectDetails;

            return(result);
        }
        // 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: 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: 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));
        }
Пример #5
0
 public static System.Func <System.Func <object, object>, System.Func <object, object> > CrashReport(
     IStoreObject store)
 {
     return((System.Func <object, object> next) => (object action) => {
         try {
             return next(action);
         } catch (System.Exception e) {
             Debug.LogError("CrashReport: " + e.Message);
             throw e;
         }
     });
 }
Пример #6
0
 // Token: 0x060000C7 RID: 199 RVA: 0x00005318 File Offset: 0x00003518
 internal static bool IsItemInDumpster(MailboxSession mailboxSession, IStoreObject storeObject)
 {
     if (storeObject != null && storeObject.ParentId != null)
     {
         using (COWSession cowsession = COWSession.Create(mailboxSession))
         {
             return(cowsession.IsDumpsterFolder(mailboxSession, storeObject.ParentId));
         }
         return(false);
     }
     return(false);
 }
        public void OpenWindow(IStoreObject item)
        {
            if (ActivateWindow(item))
            {
                return;
            }

            var w = new EditWindowDetails {
                StoreObject = item, StoreObjectDetails = FindModelStoreObjectDetails(item), Type = GetStoreObjectType(item)
            };

            Model.EditWindows.Add(w);
            ActivateWindow(item);
        }
        // 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);
        }
        public EditWindowType GetStoreObjectType(IStoreObject item)
        {
            if (item is StoreSchema)
            {
                return(EditWindowType.Schema);
            }
            else if (item is StoreQuery)
            {
                return(EditWindowType.Query);
            }
            else if (item is StoreForm)
            {
                return(EditWindowType.Form);
            }
            else if (item is StoreProject)
            {
                return(EditWindowType.ProjectSettings);
            }

            return(EditWindowType.Unknown);
        }
        // Token: 0x060013D5 RID: 5077 RVA: 0x000735A0 File Offset: 0x000717A0
        private void HandleSubscriptionChangeEvent(IMailboxSession session, IStoreObject item)
        {
            IPushNotificationSubscriptionItem pushNotificationSubscriptionItem = item as IPushNotificationSubscriptionItem;

            if (pushNotificationSubscriptionItem == null)
            {
                throw new InvalidStoreObjectInstanceException((item != null) ? item.GetType() : null);
            }
            try
            {
                PushNotificationServerSubscription pushNotificationServerSubscription = PushNotificationServerSubscription.FromJson(pushNotificationSubscriptionItem.SerializedNotificationSubscription);
                this.assistantCache.UpdateSubscriptionData(session.MailboxGuid, pushNotificationServerSubscription);
                if (pushNotificationServerSubscription.GetSubscriptionOption() == this.MailboxTable.ReadSubscriptionOnMailboxTable(session))
                {
                    ExTraceGlobals.PushNotificationAssistantTracer.TraceDebug <Guid>((long)this.GetHashCode(), "PushNotificationAssistantAdapter.HandleSubscriptionChangeEvent: Mailbox Header Table is up to date for {0}.", session.MailboxGuid);
                    PushNotificationsAssistantPerfCounters.TotalSubscriptionsUpdated.Increment();
                }
                else
                {
                    this.MailboxTable.UpdateSubscriptionOnMailboxTable(session, pushNotificationServerSubscription);
                    PushNotificationHelper.LogSubscriptionUpdated(pushNotificationSubscriptionItem, pushNotificationServerSubscription, session.MailboxGuid);
                    PushNotificationsAssistantPerfCounters.TotalNewSubscriptionsCreated.Increment();
                    PushNotificationsAssistantPerfCounters.CurrentActiveUserSubscriptions.Increment();
                }
            }
            catch (Exception ex)
            {
                Globals.Logger.LogEvent(InfoWorkerEventLogConstants.Tuple_FailedToUpdateSubscriptionOnMailboxTable, ex.ToString(), new object[]
                {
                    pushNotificationSubscriptionItem.SerializedNotificationSubscription,
                    session.MailboxGuid,
                    ex.ToTraceString()
                });
                throw;
            }
        }
        public bool ActivateWindow(IStoreObject item)
        {
            var w = GetEditWindows().FirstOrDefault(x => x.StoreObject == item);

            if (w != null)
            {
                ActiveWindowIndex = GetEditWindows().IndexOf(w);
                ActiveWindowName  = w.StoreObject.Name;

                if (GetStoreObjectType(item) == EditWindowType.Form)
                {
                    FormBuilderControllerSwitchModel(item as StoreForm);
                    //_formBuilderController.SwitchModel(form.Model);
                }
                else if (GetStoreObjectType(item) == EditWindowType.Query)
                {
                    QueryControllerSwitchModel(item as StoreQuery);
                }

                return(true);
            }

            return(false);
        }
        // Token: 0x060000EF RID: 239 RVA: 0x00005A6C File Offset: 0x00003C6C
        private static void HandleContact(MapiEvent mapiEvent, MailboxSession mailboxSession, IStoreObject contactStoreObject, Trace tracer)
        {
            tracer.TraceDebug(0L, "BirthdayAssistant:HandleContact enter");
            BirthdayAssistantBusinessLogic birthdayAssistantBusinessLogic = new BirthdayAssistantBusinessLogic();

            if (Globals.IsStoreObjectDeleted(mapiEvent, mailboxSession, contactStoreObject))
            {
                tracer.TraceDebug(0L, "BirthdayAssistant:HandleContact: contact was deleted");
                StoreObjectId birthdayContactStoreObjectId = StoreObjectId.FromProviderSpecificId(mapiEvent.OldItemEntryId, StoreObjectType.Contact);
                birthdayAssistantBusinessLogic.OnContactDeleted(birthdayContactStoreObjectId, mailboxSession);
            }
            else if ((mapiEvent.EventMask & MapiEventTypeFlags.ObjectCreated) != (MapiEventTypeFlags)0)
            {
                tracer.TraceDebug(0L, "BirthdayAssistant:HandleContact: contact was created");
                BirthdayContact birthdayContact = BirthdayContactTranslator.Instance.ConvertToEntity(contactStoreObject as IContact);
                tracer.TraceDebug(0L, "BirthdayAssistant:HandleContact: converted contact to entity");
                birthdayAssistantBusinessLogic.OnContactAdded(birthdayContact, mailboxSession);
            }
            else if ((mapiEvent.EventMask & MapiEventTypeFlags.ObjectModified) != (MapiEventTypeFlags)0)
            {
                tracer.TraceDebug(0L, "BirthdayAssistant:HandleContact: contact was modified");
                BirthdayContact birthdayContact2 = BirthdayContactTranslator.Instance.ConvertToEntity(contactStoreObject as IContact);
                birthdayAssistantBusinessLogic.OnContactModified(birthdayContact2, mailboxSession);
            }
            else
            {
                tracer.TraceDebug <MapiEvent>(0L, "BirthdayAssistant:HandleContact: no-op for MAPI event {0}", mapiEvent);
            }
            tracer.TraceDebug(0L, "BirthdayAssistant:HandleContact exit");
        }
Пример #13
0
 // 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: 0x060015C8 RID: 5576
 protected abstract void OnObjectDeleted(IMapiEvent mapiEvent, IMailboxSession itemStore, IStoreObject item, List <KeyValuePair <string, object> > customDataToLog);
Пример #15
0
 // Token: 0x060015DC RID: 5596 RVA: 0x0007B1D8 File Offset: 0x000793D8
 protected override void OnObjectDeleted(IMapiEvent mapiEvent, IMailboxSession itemStore, IStoreObject item, List <KeyValuePair <string, object> > customDataToLog)
 {
     ExTraceGlobals.GeneralTracer.TraceDebug((long)this.GetHashCode(), "EventTimeBasedInboxReminderProcessor.OnObjectDeleted");
     if (item is ICalendarItem && item.StoreObjectId != null)
     {
         ICalendarItem calendarItem = (ICalendarItem)item;
         if (calendarItem.GlobalObjectId == null)
         {
             base.Log.LogEntry(itemStore, "EventTimeBasedInboxReminder.OnObjectDeleted - Calendar item missing GOID", new object[0]);
             return;
         }
         base.Log.LogEntry(itemStore, "EventTimeBasedInboxReminder.OnObjectDeleted - Start Time:{0}, End Time:{1}", new object[]
         {
             calendarItem.StartTime.UniversalTime,
             calendarItem.EndTime.UniversalTime
         });
         this.DeleteReminderMessages(itemStore, calendarItem, customDataToLog);
     }
 }
Пример #16
0
            public System.Func <System.Func <object, object>, System.Func <object, object> > Process(IStoreObject store)
            {
                return((System.Func <object, object> next) => (object action) =>
                {
                    if (action is RequestAction && this.InjectGameObject != null)
                    {
                        var entity = (RequestAction)action;

                        Observable.FromCoroutine <ResponseAction>(observer =>
                                                                  Request(
                                                                      entity.Url,
                                                                      data =>
                        {
                            observer.OnNext(data);
                            observer.OnCompleted();
                        },
                                                                      error => observer.OnError(new Exception("Network error"))
                                                                      )
                                                                  )
                        .Subscribe(data => next(data), error => next(error))
                        .AddTo(this.InjectGameObject);
                    }

                    return null;
                });
            }
 // 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: 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");
 }
Пример #19
0
        public static void Build(this IStoreObject storeObject)
        {
            var store = storeObject as IInitialize;

            store.Initialize();
        }
Пример #20
0
 public static System.Func <System.Func <object, object>, System.Func <object, object> > Thunk(IStoreObject store)
 {
     return((System.Func <object, object> next) => (object action) =>
     {
         return Observable.ReturnUnit().Select(_ =>
         {
             next(action);
             return Unit.Default;
         });
     });
 }
Пример #21
0
 // 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: 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);
            }
        }
Пример #23
0
 public static System.Func <System.Func <object, object>, System.Func <object, object> > Logger(IStoreObject store)
 {
     return((System.Func <object, object> next) => (object action) => {
         // Debug.Log("previous state: " + store.ObjectState);
         // Debug.Log("action: " + action);
         var result = next(action);
         // Debug.Log("next state: " + store.ObjectState);
         return result;
     });
 }