void IMapiFxProxy.ProcessRequest(FxOpcodes opCode, byte[] data) { switch (opCode) { case FxOpcodes.Config: this.folderProcessor = FastTransferFolderCopyTo.CreateUploadStateMachine((PstFxFolder)this.targetObject); this.uploadContext = new FastTransferUploadContext(Encoding.ASCII, NullResourceTracker.Instance, PropertyFilterFactory.IncludeAllFactory, false); this.uploadContext.PushInitial(this.folderProcessor); return; case FxOpcodes.TransferBuffer: try { this.uploadContext.PutNextBuffer(new ArraySegment <byte>(data)); return; } catch (PSTExceptionBase innerException) { throw new MailboxReplicationPermanentException(new LocalizedString("TransferBuffer"), innerException); } break; case FxOpcodes.IsInterfaceOk: case FxOpcodes.TellPartnerVersion: return; } throw new NotSupportedException(); }
protected override IFastTransferProcessor <FastTransferUploadContext> GetFxProcessor(uint transferMethod) { IFastTransferProcessor <FastTransferUploadContext> result; if (transferMethod == 1U) { result = FastTransferFolderCopyTo.CreateUploadStateMachine(base.TargetObject.FxFolder); } else { if (transferMethod != 3U) { throw new FastTransferBufferException("transferMethod", (int)transferMethod); } result = new FastTransferMessageIterator(new MessageIteratorClient(base.TargetObject.CoreFolder), true); } return(result); }
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); }); }