예제 #1
0
        protected override FastTransferBlock MapiGetBuffer(out int residualCacheSize, out bool doneInCache)
        {
            FastTransferBlock buffer = this.synchronizer.GetBuffer(out residualCacheSize, out doneInCache);

            if (buffer.Progress > 0U && !this.reportedMessagesWereDownloaded)
            {
                base.CoreFolder.Session.MessagesWereDownloaded = true;
                this.reportedMessagesWereDownloaded            = true;
            }
            return(buffer);
        }
예제 #2
0
        private void InternalGetBuffer(out byte[] buffer, out uint steps, out uint progress, out FastTransferState state, out int residualCacheSize, out bool doneInCache)
        {
            StoreSession session = this.folder.Session;
            bool         flag    = false;

            try
            {
                if (session != null)
                {
                    session.BeginMapiCall();
                    session.BeginServerHealthCall();
                    flag = true;
                }
                if (StorageGlobals.MapiTestHookBeforeCall != null)
                {
                    StorageGlobals.MapiTestHookBeforeCall(MethodBase.GetCurrentMethod());
                }
                FastTransferBlock fastTransferBlock = this.MapiGetBuffer(out residualCacheSize, out doneInCache);
                buffer   = fastTransferBlock.Buffer;
                steps    = fastTransferBlock.Steps;
                progress = fastTransferBlock.Progress;
                state    = (FastTransferState)fastTransferBlock.State;
            }
            catch (MapiPermanentException ex)
            {
                throw StorageGlobals.TranslateMapiException(ServerStrings.CannotGetSynchronizeBuffers(typeof(SynchronizerProviderBase)), ex, session, this, "{0}. MapiException = {1}.", new object[]
                {
                    string.Format("SynchronizerProviderBase.GetBuffer. Call to GetBuffer failed.", new object[0]),
                    ex
                });
            }
            catch (MapiRetryableException ex2)
            {
                throw StorageGlobals.TranslateMapiException(ServerStrings.CannotGetSynchronizeBuffers(typeof(SynchronizerProviderBase)), ex2, session, this, "{0}. MapiException = {1}.", new object[]
                {
                    string.Format("SynchronizerProviderBase.GetBuffer. Call to GetBuffer failed.", new object[0]),
                    ex2
                });
            }
            finally
            {
                try
                {
                    if (session != null)
                    {
                        session.EndMapiCall();
                        if (flag)
                        {
                            session.EndServerHealthCall();
                        }
                    }
                }
                finally
                {
                    if (StorageGlobals.MapiTestHookAfterCall != null)
                    {
                        StorageGlobals.MapiTestHookAfterCall(MethodBase.GetCurrentMethod());
                    }
                }
            }
        }