Exemplo n.º 1
0
        // Token: 0x06001ACB RID: 6859 RVA: 0x000734C4 File Offset: 0x000716C4
        internal void GetSeedingProgress(string handle)
        {
            ExTraceGlobals.SeederServerTracer.TraceDebug <Guid, string>((long)this.GetHashCode(), "GetSeedingProgress databaseGuid ({0}), handle ({1}).", this.m_databaseGuid, this.seedingHandle);
            long arg = this.PerformCiSeedingAction(delegate
            {
                int num = -1;
                if (RegistryParameters.TestDelayCatalogSeedSec > 0)
                {
                    double totalSeconds = (ExDateTime.UtcNow - this.ciSeedStartTimeUtc).TotalSeconds;
                    double num2         = (double)RegistryParameters.TestDelayCatalogSeedSec;
                    if (totalSeconds < num2)
                    {
                        num = (int)(totalSeconds * 100.0 / num2);
                    }
                }
                if (num < 0 || num >= 100)
                {
                    num = this.indexSeederSource.GetProgress(this.seedingHandle);
                }
                ExTraceGlobals.SeederServerTracer.TraceDebug <int>((long)this.GetHashCode(), "IndexSeeder.GetProgress returned {0}", num);
                ProgressCiFileReply progressCiFileReply = new ProgressCiFileReply(this.m_channel, num);
                progressCiFileReply.Send();
            });

            ExTraceGlobals.SeederServerTracer.TraceDebug <long>((long)this.GetHashCode(), "GetSeedingProgress finished call after {0}ms.", arg);
        }
Exemplo n.º 2
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);
        }