void ISourceMailbox.CopyTo(IFxProxy fxProxy, PropTag[] excludeTags) { MrsTracer.Provider.Function("MapiSourceMailbox.CopyTo", new object[0]); base.VerifyMailboxConnection(VerifyMailboxConnectionFlags.None); bool flag = false; try { CopyPropertiesFlags copyPropertiesFlags = CopyPropertiesFlags.None; if ((base.Flags & LocalMailboxFlags.StripLargeRulesForDownlevelTargets) != LocalMailboxFlags.None) { copyPropertiesFlags |= CopyPropertiesFlags.StripLargeRulesForDownlevelTargets; } using (base.RHTracker.Start()) { using (FxProxyBudgetWrapper fxProxyBudgetWrapper = new FxProxyBudgetWrapper(fxProxy, false, new Func <IDisposable>(base.RHTracker.StartExclusive), new Action <uint>(base.RHTracker.Charge))) { base.MapiStore.ExportObject(fxProxyBudgetWrapper, copyPropertiesFlags, excludeTags); } } flag = true; fxProxy.Flush(); } finally { if (!flag) { MrsTracer.Provider.Debug("Flushing target proxy after receiving an exception.", new object[0]); CommonUtils.CatchKnownExceptions(new Action(fxProxy.Flush), null); } } }
void ISourceFolder.CopyTo(IFxProxy destFxProxy, CopyPropertiesFlags flags, PropTag[] excludeTags) { MrsTracer.ProxyClient.Function("ISourceFolder.CopyTo({0}): {1}", new object[] { flags, base.FolderName }); byte[] objectData = destFxProxy.GetObjectData(); DataExportBatch dataExportBatch; if (base.ServerVersion[30]) { dataExportBatch = base.MrsProxy.ISourceFolder_CopyTo(base.Handle, (int)flags, DataConverter <PropTagConverter, PropTag, int> .GetData(excludeTags), objectData); } else { dataExportBatch = base.MrsProxy.ISourceFolder_Export2(base.Handle, DataConverter <PropTagConverter, PropTag, int> .GetData(excludeTags), objectData); } long dataExportHandle = dataExportBatch.DataExportHandle; using (FxProxyReceiver fxProxyReceiver = new FxProxyReceiver(destFxProxy, false)) { using (BufferedReceiver bufferedReceiver = new BufferedReceiver(fxProxyReceiver, false, base.MrsProxyClient.UseBuffering, base.MrsProxyClient.UseCompression)) { RemoteDataExport.ExportRoutine(base.MrsProxy, dataExportHandle, bufferedReceiver, dataExportBatch, base.MrsProxyClient.UseCompression); } } }
void ISourceFolder.CopyTo(IFxProxy fxFolderProxy, CopyPropertiesFlags flags, PropTag[] propTagsToExclude) { MrsTracer.Provider.Function("PstSourceFolder.ISourceFolder.CopyTo", new object[0]); bool exportCompleted = false; CommonUtils.ProcessKnownExceptions(delegate { FxCollectorSerializer fxCollectorSerializer = new FxCollectorSerializer(fxFolderProxy); fxCollectorSerializer.Config(0, 1); using (FastTransferDownloadContext fastTransferDownloadContext = FastTransferDownloadContext.CreateForDownload(FastTransferSendOption.Unicode | FastTransferSendOption.UseCpId | FastTransferSendOption.ForceUnicode, 1U, Encoding.ASCII, NullResourceTracker.Instance, this.GetPropertyFilterFactory(PstMailbox.MoMTPtaFromPta(propTagsToExclude)), false)) { IFastTransferProcessor <FastTransferDownloadContext> fastTransferObject = FastTransferFolderCopyTo.CreateDownloadStateMachine(this.Folder, FastTransferFolderContentBase.IncludeSubObject.None); fastTransferDownloadContext.PushInitial(fastTransferObject); FxUtils.TransferFxBuffers(fastTransferDownloadContext, fxCollectorSerializer); } exportCompleted = true; fxFolderProxy.Flush(); }, delegate(Exception ex) { if (!exportCompleted) { MrsTracer.Provider.Debug("Flushing target proxy after receiving an exception.", new object[0]); CommonUtils.CatchKnownExceptions(new Action(fxFolderProxy.Flush), null); } return(false); }); }
void ISourceFolder.ExportMessages(IFxProxy destFolderProxy, CopyMessagesFlags flags, byte[][] entryIds) { MrsTracer.Provider.Function("StorageSourceFolder.ExportMessages({0})", new object[] { base.DisplayNameForTracing }); bool exportCompleted = false; CommonUtils.ProcessKnownExceptions(delegate { using (this.Mailbox.RHTracker.Start()) { using (FxProxyBudgetWrapper fxProxyBudgetWrapper = new FxProxyBudgetWrapper(destFolderProxy, false, new Func <IDisposable>(this.Mailbox.RHTracker.StartExclusive), new Action <uint>(this.Mailbox.RHTracker.Charge))) { this.MapiFolder.ExportMessages(fxProxyBudgetWrapper, flags, entryIds); } } exportCompleted = true; destFolderProxy.Flush(); }, delegate(Exception ex) { if (!exportCompleted) { MrsTracer.Provider.Debug("Flushing target proxy after receiving an exception.", new object[0]); CommonUtils.CatchKnownExceptions(new Action(destFolderProxy.Flush), null); } return(false); }); }
void ISourceFolder.CopyTo(IFxProxy destFolderProxy, CopyPropertiesFlags flags, PropTag[] excludeTags) { MrsTracer.Provider.Function("StorageSourceFolder.CopyTo({0})", new object[] { base.DisplayNameForTracing }); if ((base.Mailbox.Flags & LocalMailboxFlags.StripLargeRulesForDownlevelTargets) != LocalMailboxFlags.None) { flags |= CopyPropertiesFlags.StripLargeRulesForDownlevelTargets; } bool exportCompleted = false; CommonUtils.ProcessKnownExceptions(delegate { using (this.Mailbox.RHTracker.Start()) { using (FxProxyBudgetWrapper fxProxyBudgetWrapper = new FxProxyBudgetWrapper(destFolderProxy, false, new Func <IDisposable>(this.Mailbox.RHTracker.StartExclusive), new Action <uint>(this.Mailbox.RHTracker.Charge))) { this.MapiFolder.ExportObject(fxProxyBudgetWrapper, flags, excludeTags); } } exportCompleted = true; destFolderProxy.Flush(); }, delegate(Exception ex) { if (!exportCompleted) { MrsTracer.Provider.Debug("Flushing target proxy after receiving an exception.", new object[0]); CommonUtils.CatchKnownExceptions(new Action(destFolderProxy.Flush), null); } return(false); }); }
void ISourceFolder.ExportMessages(IFxProxy destFolderProxy, CopyMessagesFlags flags, byte[][] entryIds) { MrsTracer.Provider.Function("MapiSourceFolder.CopyTo", new object[0]); bool flag = false; try { using (base.Mailbox.RHTracker.Start()) { using (FxProxyBudgetWrapper fxProxyBudgetWrapper = new FxProxyBudgetWrapper(destFolderProxy, false, new Func <IDisposable>(base.Mailbox.RHTracker.StartExclusive), new Action <uint>(base.Mailbox.RHTracker.Charge))) { base.Folder.ExportMessages(fxProxyBudgetWrapper, flags, entryIds); } } flag = true; destFolderProxy.Flush(); } catch (LocalizedException) { if (!flag) { MrsTracer.Provider.Debug("Flushing target proxy after receiving an exception.", new object[0]); CommonUtils.CatchKnownExceptions(new Action(destFolderProxy.Flush), null); } throw; } }
void ISourceFolder.CopyTo(IFxProxy destFolderProxy, CopyPropertiesFlags flags, PropTag[] excludeTags) { MrsTracer.Provider.Function("MapiSourceFolder.CopyTo", new object[0]); if ((base.Mailbox.Flags & LocalMailboxFlags.StripLargeRulesForDownlevelTargets) != LocalMailboxFlags.None) { flags |= CopyPropertiesFlags.StripLargeRulesForDownlevelTargets; } bool flag = false; try { using (base.Mailbox.RHTracker.Start()) { using (FxProxyBudgetWrapper fxProxyBudgetWrapper = new FxProxyBudgetWrapper(destFolderProxy, false, new Func <IDisposable>(base.Mailbox.RHTracker.StartExclusive), new Action <uint>(base.Mailbox.RHTracker.Charge))) { base.Folder.ExportObject(fxProxyBudgetWrapper, flags, excludeTags); } } flag = true; destFolderProxy.Flush(); } catch (LocalizedException) { if (!flag) { MrsTracer.Provider.Debug("Flushing target proxy after receiving an exception.", new object[0]); CommonUtils.CatchKnownExceptions(new Action(destFolderProxy.Flush), null); } throw; } }
void ISourceMailbox.CopyTo(IFxProxy destMailbox, PropTag[] excludeProps) { base.CreateContext("ISourceMailbox.CopyTo", new DataContext[] { new PropTagsDataContext(excludeProps) }).Execute(delegate { ((ISourceMailbox)this.WrappedObject).CopyTo(destMailbox, excludeProps); }, true); }
void ISourceFolder.ExportMessages(IFxProxy destFolderProxy, CopyMessagesFlags flags, byte[][] entryIds) { base.CreateContext("ISourceFolder.ExportMessages", new DataContext[] { new SimpleValueDataContext("Flags", flags), new EntryIDsDataContext(entryIds) }).Execute(delegate { ((ISourceFolder)this.WrappedObject).ExportMessages(destFolderProxy, flags, entryIds); }, true); }
void IFxProxy.Flush() { base.CreateContext("IFxProxy.Flush", new DataContext[0]).Execute(delegate { IFxProxy fxProxy = base.WrappedObject as IFxProxy; if (fxProxy != null) { fxProxy.Flush(); } }, true); }
void IFxProxy.Flush() { IFxProxy fxProxy = base.WrappedObject as IFxProxy; if (fxProxy != null) { using (base.CreateCostHandle()) { fxProxy.Flush(); } } }
IFxProxy IDestinationMailbox.GetFxProxy() { IFxProxy result = null; base.CreateContext("IDestinationMailbox.GetFxProxy", new DataContext[0]).Execute(delegate { result = ((IDestinationMailbox)this.WrappedObject).GetFxProxy(); }, true); if (result == null) { return(null); } return(new FxProxyWrapper(result, base.CreateContext)); }
IFxProxy IDestinationFolder.GetFxProxy(FastTransferFlags flags) { IFxProxy result = null; base.CreateContext("IDestinationFolder.GetFxProxy", new DataContext[0]).Execute(delegate { result = ((IDestinationFolder)this.WrappedObject).GetFxProxy(flags); }, true); if (result == null) { return(null); } return(new FxProxyWrapper(result, base.CreateContext)); }
void ISourceMailbox.CopyTo(IFxProxy destMailbox, PropTag[] excludeProps) { MrsTracer.ProxyClient.Function("RemoteSourceMailbox.CopyTo", new object[0]); base.VerifyMailboxConnection(); byte[] objectData = destMailbox.GetObjectData(); DataExportBatch dataExportBatch = base.MrsProxy.ISourceMailbox_Export2(base.Handle, DataConverter <PropTagConverter, PropTag, int> .GetData(excludeProps), objectData); using (FxProxyReceiver fxProxyReceiver = new FxProxyReceiver(destMailbox, false)) { using (BufferedReceiver bufferedReceiver = new BufferedReceiver(fxProxyReceiver, false, base.MrsProxyClient.UseBuffering, base.MrsProxyClient.UseCompression)) { RemoteDataExport.ExportRoutine(base.MrsProxy, dataExportBatch.DataExportHandle, bufferedReceiver, dataExportBatch, base.MrsProxyClient.UseCompression); } } }
public override void CopyFolderProperties(FolderRecWrapper sourceFolderRecWrapper, ISourceFolder sourceFolder, IDestinationFolder destFolder, FolderRecDataFlags dataToCopy, out bool wasPropertyCopyingSkipped) { wasPropertyCopyingSkipped = false; if (this.sessionSpecificEntryIds.ContainsKey(sourceFolderRecWrapper.EntryId) && destFolder != null) { if (base.SupportsPerUserReadUnreadDataTransfer) { using (IFxProxy fxProxy = destFolder.GetFxProxy(FastTransferFlags.PassThrough)) { using (IFxProxy fxProxy2 = base.CreateFxProxyTransmissionPipeline(fxProxy)) { sourceFolder.CopyTo(fxProxy2, CopyPropertiesFlags.CopyFolderPerUserData, Array <PropTag> .Empty); } } } base.CopyFolderProperties(sourceFolderRecWrapper, sourceFolder, destFolder, FolderRecDataFlags.Rules, out wasPropertyCopyingSkipped); } }
void ISourceFolder.ExportMessages(IFxProxy destFolderProxy, CopyMessagesFlags flags, byte[][] entryIds) { MrsTracer.ProxyClient.Function("ISourceFolder.ExportMessages({0}): {1}", new object[] { flags, base.FolderName }); byte[] objectData = destFolderProxy.GetObjectData(); DataExportBatch dataExportBatch = base.MrsProxy.ISourceFolder_ExportMessages(base.Handle, (int)flags, entryIds, objectData); long dataExportHandle = dataExportBatch.DataExportHandle; using (FxProxyReceiver fxProxyReceiver = new FxProxyReceiver(destFolderProxy, false)) { using (BufferedReceiver bufferedReceiver = new BufferedReceiver(fxProxyReceiver, false, base.MrsProxyClient.UseBuffering, base.MrsProxyClient.UseCompression)) { RemoteDataExport.ExportRoutine(base.MrsProxy, dataExportHandle, bufferedReceiver, dataExportBatch, base.MrsProxyClient.UseCompression); } } }
void ISourceFolder.CopyTo(IFxProxy destFolder, CopyPropertiesFlags flags, PropTag[] excludeTags) { string text = "ISourceFolder.CopyTo"; TimeSpan targetDuration = TimeSpan.Zero; Stopwatch stopwatch = Stopwatch.StartNew(); base.CreateContext(text, new DataContext[] { new PropTagsDataContext(excludeTags) }).Execute(delegate { using (FxProxyCallbackWrapper fxProxyCallbackWrapper = new FxProxyCallbackWrapper(destFolder, true, delegate(TimeSpan duration) { targetDuration += duration; })) { ((ISourceFolder)this.WrappedObject).CopyTo(fxProxyCallbackWrapper, flags, excludeTags); } }, false); base.UpdateDuration(text, stopwatch.Elapsed.Subtract(targetDuration)); }
public void FinalSyncCopyMailboxData() { if (base.MRSJob.TestIntegration.RemoteExchangeGuidOverride == Guid.Empty) { using (IFxProxy fxProxy = base.DestMailbox.GetFxProxy()) { using (IFxProxy fxProxy2 = base.CreateFxProxyTransmissionPipeline(fxProxy)) { base.SourceMailbox.CopyTo(fxProxy2, new PropTag[] { PropTag.ContainerHierarchy, PropTag.ContainerContents }); } } if (this.ServerSupportsInferencePropertiesMove(base.SourceMailboxWrapper.MailboxVersion) && this.ServerSupportsInferencePropertiesMove(base.DestMailboxWrapper.MailboxVersion) && base.MRSJob.GetConfig <bool>("CopyInferenceProperties")) { byte[] badItemId = BitConverter.GetBytes(base.SourceMailbox.GetHashCode()); CommonUtils.ProcessKnownExceptions(delegate { List <PropValueData> list = new List <PropValueData>(2); foreach (PropValueData propValueData in this.SourceMailbox.GetProps(MailboxMover.inferencePropertiesToMove)) { if (((PropTag)propValueData.PropTag).ValueType() != PropType.Error) { list.Add(propValueData); } } badItemId = BadMessageRec.ComputeKey(list.ToArray()); if (!this.SyncState.BadItems.ContainsKey(badItemId)) { this.DestMailbox.SetProps(list.ToArray()); } }, delegate(Exception failure) { if (MapiUtils.IsBadItemIndicator(failure)) { List <BadMessageRec> list = new List <BadMessageRec>(1); list.Add(BadMessageRec.InferenceData(failure, badItemId)); this.ReportBadItems(list); return(true); } return(false); }); } } if (base.SupportsPerUserReadUnreadDataTransfer) { base.Report.Append(MrsStrings.ReportCopyPerUserReadUnreadDataStarted); using (ISourceFolder folder = base.SourceMailbox.GetFolder(null)) { using (IDestinationFolder folder2 = base.DestMailbox.GetFolder(null)) { using (IFxProxy fxProxy3 = folder2.GetFxProxy(FastTransferFlags.PassThrough)) { using (IFxProxy fxProxy4 = base.CreateFxProxyTransmissionPipeline(fxProxy3)) { folder.CopyTo(fxProxy4, CopyPropertiesFlags.CopyMailboxPerUserData, Array <PropTag> .Empty); } } } } base.Report.Append(MrsStrings.ReportCopyPerUserReadUnreadDataCompleted); } }
void ISourceFolder.ExportMessages(IFxProxy destFolderProxy, CopyMessagesFlags flags, byte[][] entryIds) { throw new NotImplementedException(); }
void ISourceFolder.CopyTo(IFxProxy fxFolderProxy, CopyPropertiesFlags flags, PropTag[] propTagsToExclude) { }
void ISourceMailbox.CopyTo(IFxProxy destMailboxProxy, PropTag[] excludeTags) { throw new NotImplementedException(); }