示例#1
0
 // Token: 0x06000DC9 RID: 3529 RVA: 0x000341BC File Offset: 0x000323BC
 internal void AddFolderCountPayload(StoreObjectId folderId, HierarchyNotificationPayload payload)
 {
     ExTraceGlobals.NotificationsCallTracer.TraceDebug((long)this.GetHashCode(), "HierarchyNotifier.AddFolderCountPayload Start");
     lock (this)
     {
         if (this.refreshPayload == null)
         {
             this.folderCountTable[folderId] = payload;
             if (this.folderCountTable.Count > 200)
             {
                 ExTraceGlobals.NotificationsCallTracer.TraceDebug((long)this.GetHashCode(), "HierarchyNotifier.AddFolderCountPayload Exceeded maxfoldercount");
                 this.AddRefreshPayload(payload.SubscriptionId);
             }
         }
     }
 }
        private void ProcessHierarchyNotification(QueryNotification notification)
        {
            VersionedId   versionedId   = notification.Row[0] as VersionedId;
            StoreObjectId storeObjectId = null;

            if (versionedId != null)
            {
                storeObjectId = versionedId.ObjectId;
            }
            if (storeObjectId == null || notification.Row[2] == null || notification.Row[3] == null || notification.Row[4] == null || notification.Row[6] == null)
            {
                ExTraceGlobals.CoreCallTracer.TraceDebug <SmtpAddress>((long)this.GetHashCode(), "Hierarchy notification has a null folder id or is malformed. User: {0}", base.UserContext.PrimarySmtpAddress);
                return;
            }
            int num  = (int)notification.Row[2];
            int num2 = (int)notification.Row[3];

            if (notification.Row[6] is bool && !(bool)notification.Row[6] && !this.IsAllowedSearchFolder(storeObjectId))
            {
                return;
            }
            HierarchyNotificationPayload payloadInstance = this.GetPayloadInstance(storeObjectId);

            payloadInstance.FolderId       = StoreId.StoreIdToEwsId(this.mailboxGuid, storeObjectId);
            payloadInstance.DisplayName    = (string)notification.Row[1];
            payloadInstance.ParentFolderId = ((notification.Row[5] != null) ? StoreId.StoreIdToEwsId(this.mailboxGuid, notification.Row[5] as StoreId) : null);
            payloadInstance.ItemCount      = (long)num;
            payloadInstance.UnreadCount    = (long)num2;
            payloadInstance.SubscriptionId = base.SubscriptionId;
            payloadInstance.EventType      = notification.EventType;
            if (!(notification.Row[4] is PropertyError))
            {
                string          itemClass  = (string)notification.Row[4];
                StoreObjectType objectType = ObjectClass.GetObjectType(itemClass);
                payloadInstance.FolderType = objectType;
            }
            else
            {
                ExTraceGlobals.CoreCallTracer.TraceDebug <SmtpAddress>((long)this.GetHashCode(), "Hierarchy notification received PropertyError for Item Class. User: {0}", base.UserContext.PrimarySmtpAddress);
            }
            this.hierarchyNotifier.AddFolderCountPayload(storeObjectId, payloadInstance);
        }