Beispiel #1
0
        // Token: 0x060019CC RID: 6604 RVA: 0x0006BFC4 File Offset: 0x0006A1C4
        private void UpdateProgress(string seedingHandle, IReplicaSeederCallback callback)
        {
            ReplayStopwatch       replayStopwatch       = new ReplayStopwatch();
            ProgressCiFileRequest progressCiFileRequest = new ProgressCiFileRequest(this.channel, this.databaseGuid, seedingHandle);
            int      num     = -1;
            TimeSpan timeout = TimeSpan.FromSeconds((double)RegistryParameters.SeedCatalogProgressIntervalInSec);
            int      progress;

            for (;;)
            {
                progressCiFileRequest.Send();
                replayStopwatch.Restart();
                NetworkChannelMessage message             = this.channel.GetMessage();
                ProgressCiFileReply   progressCiFileReply = message as ProgressCiFileReply;
                if (progressCiFileReply == null)
                {
                    this.channel.ThrowUnexpectedMessage(message);
                }
                ExTraceGlobals.SeederServerTracer.TraceDebug <long>((long)this.GetHashCode(), "ProgressCiFile response took: {0}ms", replayStopwatch.ElapsedMilliseconds);
                progress = progressCiFileReply.Progress;
                ExTraceGlobals.SeederServerTracer.TraceDebug <int>((long)this.GetHashCode(), "Get seeding progress: {0}", progress);
                if (callback != null && callback.IsBackupCancelled())
                {
                    break;
                }
                if (progress < 0)
                {
                    goto Block_4;
                }
                if (progress > num)
                {
                    ExTraceGlobals.SeederServerTracer.TraceDebug <Guid, int, bool>((long)this.GetHashCode(), "Updating progress for catalog '{0}'. Percent = {1}%. Callback = {2}", this.databaseGuid, progress, callback != null);
                    if (callback != null)
                    {
                        callback.ReportProgress("IndexSystem", 102400L, (long)progress * 1024L, (long)progress * 1024L);
                    }
                    num = progress;
                }
                if (progress == 100)
                {
                    return;
                }
                Thread.Sleep(timeout);
            }
            ExTraceGlobals.SeederServerTracer.TraceDebug <int>((long)this.GetHashCode(), "The seeding was cancelled at {0}%", num);
            throw new SeederOperationAbortedException();
Block_4:
            Exception innerException = new CiSeederGenericException(this.sourceServerFqdn, this.targetServerFqdn, ReplayStrings.CiSeederExchangeSearchTransientException(string.Format("{0}", progress)));

            throw new PerformingFastOperationException(innerException);
        }
Beispiel #2
0
        // Token: 0x060019CA RID: 6602 RVA: 0x0006BDE4 File Offset: 0x00069FE4
        internal void SeedCatalog(string endpoint, IReplicaSeederCallback callback, string reason)
        {
            ExTraceGlobals.SeederServerTracer.TraceDebug <Guid, string>((long)this.GetHashCode(), "SeedCatalog {0} to {1}.", this.databaseGuid, endpoint);
            this.GetChannel();
            if (this.DoesSourceSupportExtensibleSeedingRequests())
            {
                SeedCiFileRequest2 seedCiFileRequest = new SeedCiFileRequest2(this.channel, this.databaseGuid, endpoint, reason);
                seedCiFileRequest.Send();
            }
            else
            {
                SeedCiFileRequest seedCiFileRequest2 = new SeedCiFileRequest(this.channel, this.databaseGuid, endpoint);
                seedCiFileRequest2.Send();
            }
            ReplayStopwatch replayStopwatch = new ReplayStopwatch();

            replayStopwatch.Start();
            NetworkChannelMessage message         = this.channel.GetMessage();
            SeedCiFileReply       seedCiFileReply = message as SeedCiFileReply;

            if (seedCiFileReply == null)
            {
                this.channel.ThrowUnexpectedMessage(message);
            }
            ExTraceGlobals.SeederServerTracer.TraceDebug <long>((long)this.GetHashCode(), "SeedCiFile response took: {0}ms", replayStopwatch.ElapsedMilliseconds);
            string handle = seedCiFileReply.Handle;

            ExTraceGlobals.SeederServerTracer.TraceDebug <string>((long)this.GetHashCode(), "Get seeding handle: {0}", handle);
            ExTraceGlobals.FaultInjectionTracer.TraceTest(2911251773U);
            this.UpdateProgress(handle, callback);
            replayStopwatch.Stop();
            ExTraceGlobals.SeederServerTracer.TraceDebug((long)this.GetHashCode(), "{0}: SeedCatalog succeeded: {1} for {2} after {3} ms", new object[]
            {
                ExDateTime.Now,
                endpoint,
                this.databaseGuid,
                replayStopwatch.ElapsedMilliseconds
            });
        }
Beispiel #3
0
 // Token: 0x060017B2 RID: 6066 RVA: 0x00061F03 File Offset: 0x00060103
 internal void ReceiveFile(string fullDestinationFileName, IReplicaSeederCallback callback, IPerfmonCounters copyPerfCtrs, CheckSummer summer)
 {
     this.DestinationFileName = fullDestinationFileName;
     this.m_channel.ReceiveFile(this, callback, copyPerfCtrs, summer);
 }