예제 #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();
        }
예제 #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);
        }