Ejemplo n.º 1
0
        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();
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
            });
        }