private void ReportFailureInternal(AmServerName server, AmBcsServerFailureLogger.AmBcsCheckInfo checkInfo, string errorMessage, bool overwriteAllowed, ReplayCrimsonEvent evt, params object[] evtArgs)
        {
            OrderedDictionary orderedDictionary;

            if (this.m_failureTable.ContainsKey(server))
            {
                orderedDictionary = this.m_failureTable[server];
            }
            else
            {
                orderedDictionary = new OrderedDictionary(10);
                this.m_failureTable.Add(server, orderedDictionary);
            }
            string str;
            bool   flag = !this.TryGetErrorFromCheckTable(orderedDictionary, checkInfo, out str) || (overwriteAllowed && !SharedHelper.StringIEquals(str, errorMessage));

            if (flag)
            {
                this.AddErrorIntoCheckTable(orderedDictionary, checkInfo, errorMessage);
                if (this.IsEventLoggingEnabled)
                {
                    evt.LogGeneric(evtArgs);
                    return;
                }
            }
            else
            {
                AmTrace.Debug("BCS: Failure for server '{0}' and check [{1}] has already been recorded. Suppressing raising another event.", new object[]
                {
                    server,
                    checkInfo
                });
            }
        }
 public void ReportServerFailure(AmServerName server, string serverCheckThatFailed, string errorMessage, bool overwriteAllowed)
 {
     AmBcsServerFailureLogger.AmBcsCheckInfo checkInfo = new AmBcsServerFailureLogger.AmBcsCheckInfo(AmBcsServerFailureLogger.AmBcsCheckType.ServerLevel, serverCheckThatFailed);
     this.ReportFailureInternal(server, checkInfo, errorMessage, overwriteAllowed, ReplayCrimsonEvents.BcsDbNodeActivationBlocked, new object[]
     {
         this.m_dbName,
         this.m_dbGuid,
         server,
         errorMessage
     });
 }
        private bool TryGetErrorFromCheckTable(OrderedDictionary checkTable, AmBcsServerFailureLogger.AmBcsCheckInfo checkInfo, out string errorMessage)
        {
            errorMessage = null;
            bool flag = checkTable.Contains(checkInfo);

            if (flag)
            {
                errorMessage = (string)checkTable[checkInfo];
                return(true);
            }
            return(false);
        }
 public void ReportServerFailure(AmServerName server, string serverCheckThatFailed, string errorMessage, ReplayCrimsonEvent evt, params object[] evtArgs)
 {
     AmBcsServerFailureLogger.AmBcsCheckInfo checkInfo = new AmBcsServerFailureLogger.AmBcsCheckInfo(AmBcsServerFailureLogger.AmBcsCheckType.ServerLevel, serverCheckThatFailed);
     this.ReportFailureInternal(server, checkInfo, errorMessage, true, evt, evtArgs);
 }
 private void AddErrorIntoCheckTable(OrderedDictionary checkTable, AmBcsServerFailureLogger.AmBcsCheckInfo checkInfo, string errorMessage)
 {
     checkTable[checkInfo] = errorMessage;
 }