// Token: 0x0600037C RID: 892 RVA: 0x00013718 File Offset: 0x00011918
 public void RecordFailure(AmServerName failingServer)
 {
     if (RegistryParameters.ListMdbStatusMonitorDisabled)
     {
         AmListMdbStatusMonitor.Tracer.TraceDebug(0L, "AmListMdbStatusMonitor disabled via regkey");
         return;
     }
     AmListMdbStatusMonitor.StatusRecord statusRecord = null;
     if (this.records.TryGetValue(failingServer, out statusRecord))
     {
         statusRecord.FailCount++;
         if (statusRecord.TimeOfFirstFailure == null)
         {
             statusRecord.TimeOfFirstFailure = new DateTime?(DateTime.UtcNow);
             return;
         }
         if (DateTime.UtcNow > statusRecord.TimeOfFirstFailure.Value + this.FailureSuppressionWindow)
         {
             this.AttemptRecovery(statusRecord);
             return;
         }
     }
     else
     {
         statusRecord                    = new AmListMdbStatusMonitor.StatusRecord();
         statusRecord.ServerName         = failingServer;
         statusRecord.FailCount          = 1;
         statusRecord.TimeOfFirstFailure = new DateTime?(DateTime.UtcNow);
         this.records[failingServer]     = statusRecord;
     }
 }
 // Token: 0x0600037D RID: 893 RVA: 0x000137E0 File Offset: 0x000119E0
 public void RecordSuccess(AmServerName succeedingServer)
 {
     AmListMdbStatusMonitor.StatusRecord statusRecord = null;
     if (this.records.TryGetValue(succeedingServer, out statusRecord))
     {
         statusRecord.FailCount          = 0;
         statusRecord.TimeOfFirstFailure = null;
     }
 }
        // Token: 0x0600037E RID: 894 RVA: 0x0001383C File Offset: 0x00011A3C
        private void AttemptRecovery(AmListMdbStatusMonitor.StatusRecord rec)
        {
            DateTime curTime = DateTime.UtcNow;

            if (rec.TimeOfLastRecoveryAction == null || curTime > rec.TimeOfLastRecoveryAction.Value + TimeSpan.FromSeconds((double)RegistryParameters.ListMdbStatusRecoveryLimitInSec))
            {
                rec.TimeOfLastRecoveryAction = new DateTime?(curTime);
                if (rec.ServerName.IsLocalComputerName)
                {
                    ReplayCrimsonEvents.AmListMdbStatusMonitorLocalRecoveryStarts.Log();
                    ThreadPool.QueueUserWorkItem(delegate(object param0)
                    {
                        this.killStoreDelegate(curTime, "ListMdbStatusMonitor");
                    });
                    return;
                }
            }
            else
            {
                AmListMdbStatusMonitor.Tracer.TraceDebug(0L, "AmListMdbStatusMonitor skipped recovery");
            }
        }