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);
            });
        }
示例#2
0
        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;
            }
        }
示例#3
0
 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);
 }
示例#4
0
 public void FolderExportMessages(ISourceFolder folder, CopyMessagesFlags flags, byte[][] entryIds)
 {
     this.RunExportThread(delegate
     {
         using (BufferedTransmitter bufferedTransmitter = new BufferedTransmitter(this, this.service.ExportBufferSizeFromMrsKB, false, this.service.UseBufferring, this.service.UseCompression))
         {
             using (AsynchronousTransmitter asynchronousTransmitter = new AsynchronousTransmitter(bufferedTransmitter, false))
             {
                 using (FxProxyTransmitter fxProxyTransmitter = new FxProxyTransmitter(asynchronousTransmitter, false))
                 {
                     folder.ExportMessages(fxProxyTransmitter, flags, entryIds);
                 }
             }
         }
     });
 }
示例#5
0
        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);
                }
            }
        }
示例#6
0
 void ISourceFolder.ExportMessages(IFxProxy destFolderProxy, CopyMessagesFlags flags, byte[][] entryIds)
 {
     throw new NotImplementedException();
 }