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 IMapiFxProxy.ProcessRequest(FxOpcodes opCode, byte[] data) { switch (opCode) { case FxOpcodes.Config: { if (data == null || data.Length != 8) { throw new FastTransferBufferException("data", (data == null) ? -1 : data.Length); } uint transferMethod = BitConverter.ToUInt32(data, 4); IFastTransferProcessor <FastTransferUploadContext> fxProcessor = this.GetFxProcessor(transferMethod); this.uploadContext = new FastTransferUploadContext(Encoding.ASCII, NullResourceTracker.Instance, PropertyFilterFactory.IncludeAllFactory, this.IsMoveUser); this.uploadContext.PushInitial(fxProcessor); return; } case FxOpcodes.TransferBuffer: ExAssert.RetailAssert(this.uploadContext != null, "StorageFxProxy:ProcessRequest: null upload context"); try { this.uploadContext.PutNextBuffer(new ArraySegment <byte>(data)); return; } catch (ArgumentException innerException) { throw new FastTransferArgumentException(innerException); } break; case FxOpcodes.IsInterfaceOk: case FxOpcodes.TellPartnerVersion: return; } throw new FastTransferBufferException("opCode", (int)opCode); }