Пример #1
0
 protected override void CopySingleMessage(MessageRec messageRec, IFolderProxy folderProxy, PropTag[] propTagsToExclude, PropTag[] excludeProps)
 {
     ExecutionContext.Create(new DataContext[]
     {
         new OperationDataContext("EasSourceMailbox.CopySingleMessage", OperationType.None),
         new EntryIDsDataContext(messageRec.EntryId)
     }).Execute(delegate
     {
         Add add;
         if (this.EasFolderCache.TryGetValue(messageRec.FolderId, out add))
         {
             EasFolderType easFolderType = add.GetEasFolderType();
             if (EasFolder.IsCalendarFolder(easFolderType))
             {
                 Properties calendarItemProperties = this.ReadCalendarItem(messageRec);
                 EasSourceMailbox.CopyCalendarItem(messageRec, calendarItemProperties, folderProxy);
                 return;
             }
             if (EasFolder.IsContactFolder(easFolderType))
             {
                 EasSourceMailbox.CopyContactItem(messageRec, folderProxy);
                 return;
             }
             SyncEmailUtils.CopyMimeStream(this, messageRec, folderProxy);
         }
     });
 }
Пример #2
0
        protected EasSyncResult SyncMessages(EasConnectionWrapper easConnectionWrapper, EasSyncOptions options)
        {
            MrsTracer.Provider.Function("EasFolder.SyncMessages: SyncKey={0}", new object[]
            {
                options.SyncKey
            });
            bool         recentOnly = !EasFolder.IsCalendarFolder(base.EasFolderType) && options.RecentOnly && !EasFolder.IsContactFolder(base.EasFolderType);
            SyncResponse syncResponse;

            try
            {
                syncResponse = easConnectionWrapper.Sync(base.ServerId, options, recentOnly);
            }
            catch (EasRequiresSyncKeyResetException ex)
            {
                MrsTracer.Provider.Error("Encountered RequiresSyncKeyReset error: {0}", new object[]
                {
                    ex
                });
                options.SyncKey = "0";
                syncResponse    = easConnectionWrapper.Sync(base.ServerId, options, recentOnly);
            }
            if (!(options.SyncKey == "0"))
            {
                return(this.GetMessageRecsAndNewSyncKey(syncResponse, options));
            }
            return(this.ProcessPrimingSync(easConnectionWrapper, options, syncResponse));
        }
Пример #3
0
        private byte[] MoveItem(byte[] messageEntryId, byte[] sourceFolderEntryId, byte[] destFolderEntryId, out bool isPermanentDeletionMove)
        {
            isPermanentDeletionMove = false;
            base.CheckDisposed();
            Add add;

            if (!base.EasFolderCache.TryGetValue(sourceFolderEntryId, out add))
            {
                MrsTracer.Provider.Warning("Source folder {0} doesn't exist", new object[]
                {
                    TraceUtils.DumpBytes(sourceFolderEntryId)
                });
                throw new EasObjectNotFoundException(EasMailbox.GetStringId(sourceFolderEntryId));
            }
            Add add2;

            if (!base.EasFolderCache.TryGetValue(destFolderEntryId, out add2))
            {
                MrsTracer.Provider.Warning("Destination folder {0} doesn't exist", new object[]
                {
                    TraceUtils.DumpBytes(destFolderEntryId)
                });
                throw new EasObjectNotFoundException(EasMailbox.GetStringId(destFolderEntryId));
            }
            string stringId = EasMailbox.GetStringId(messageEntryId);

            if (add2.Type == 4 && EasFolder.IsCalendarFolder((EasFolderType)add.Type))
            {
                this.DeleteItem(messageEntryId, sourceFolderEntryId);
                isPermanentDeletionMove = true;
                return(null);
            }
            string stringId2 = base.EasConnectionWrapper.MoveItem(stringId, add.ServerId, add2.ServerId);

            return(EasMailbox.GetEntryId(stringId2));
        }