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); } }); }
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)); }
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)); }