Пример #1
0
        /// <summary>
        /// record a connection issue, filling in timestamps etc.
        /// and notify the listener
        /// </summary>
        /// <param name="newIssue">the connection issue to be recorded</param>
        /// <param name="listener">the listener for connection issues</param>
        /// <param name="services">for reporting exceptions in listener</param>
        public void Record(ConnectionIssue newIssue, IConnectionIssueListener listener, ILogConsistencyProtocolServices services)
        {
            newIssue.TimeStamp = DateTime.UtcNow;
            if (Issue != null)
            {
                newIssue.TimeOfFirstFailure          = Issue.TimeOfFirstFailure;
                newIssue.NumberOfConsecutiveFailures = Issue.NumberOfConsecutiveFailures + 1;
                newIssue.RetryDelay = newIssue.ComputeRetryDelay(Issue.RetryDelay);
            }
            else
            {
                newIssue.TimeOfFirstFailure          = newIssue.TimeStamp;
                newIssue.NumberOfConsecutiveFailures = 1;
                newIssue.RetryDelay = newIssue.ComputeRetryDelay(null);
            }

            Issue = newIssue;

            try
            {
                listener.OnConnectionIssue(newIssue);
            }
            catch (Exception e)
            {
                services.CaughtUserCodeException("OnConnectionIssue", nameof(Record), e);
            }
        }
Пример #2
0
 protected override void OnConnectionIssueResolved(ConnectionIssue issue)
 {
     Console.WriteLine("测试 OnConnectionIssueResolved");
     Console.WriteLine($"NumberOfConsecutiveFailures:{issue.NumberOfConsecutiveFailures}");
     Console.WriteLine($"RetryDelay(s):{issue.RetryDelay.TotalSeconds}");
     Console.WriteLine($"TimeOfFirstFailure:{issue.TimeOfFirstFailure}");
     Console.WriteLine($"TimeStamp:{issue.TimeStamp}");
     base.OnConnectionIssueResolved(issue);
 }
Пример #3
0
 /// <summary>
 /// if there is a recorded issue, notify listener and clear it.
 /// </summary>
 /// <param name="listener">the listener for connection issues</param>
 /// <param name="services">for reporting exceptions in listener</param>
 public void Resolve(IConnectionIssueListener listener, ILogConsistencyProtocolServices services)
 {
     if (Issue != null)
     {
         try
         {
             listener.OnConnectionIssueResolved(Issue);
         }
         catch (Exception e)
         {
             services.CaughtUserCodeException("OnConnectionIssueResolved", nameof(Record), e);
         }
         Issue = null;
     }
 }
Пример #4
0
 protected override void OnConnectionIssueResolved(ConnectionIssue issue)
 {
     Console.WriteLine("OnConnectionIssueResolved");
     base.OnConnectionIssueResolved(issue);
 }
Пример #5
0
 protected override void OnConnectionIssueResolved(ConnectionIssue issue)
 {
     /// handle the resolution of a previously reported issue
     Logger.Error($"OnConnectionIssueResolved {issue.ToString()}");
 }
Пример #6
0
 protected override void OnConnectionIssue(ConnectionIssue issue)
 {
     Logger.Error($"OnConnectionIssue {issue.ToString()}");
 }