Add handling error in the scenario.

This commit is contained in:
BDisp
2024-11-09 21:31:02 +00:00
parent c6512e62de
commit c8aac60438

View File

@@ -13,11 +13,15 @@ public sealed class AnsiEscapeSequenceRequests : Scenario
private readonly object _lockAnswers = new ();
private readonly Dictionary<DateTime, string> _answers = new ();
private readonly object _lockErrors = new ();
private readonly Dictionary<DateTime, string> _errors = new ();
private GraphView _graphView;
private ScatterSeries _sentSeries;
private ScatterSeries _answeredSeries;
private Label _lblSummary;
private Label _lblErrorSummary;
public override void Main ()
{
@@ -151,7 +155,7 @@ public sealed class AnsiEscapeSequenceRequests : Scenario
Y = Pos.Bottom (cbDar),
X = Pos.Right (tv),
Width = Dim.Fill (),
Height = Dim.Fill (1)
Height = Dim.Fill (2)
};
_lblSummary = new ()
@@ -161,6 +165,13 @@ public sealed class AnsiEscapeSequenceRequests : Scenario
Width = Dim.Fill ()
};
_lblErrorSummary = new ()
{
Y = Pos.Bottom (_lblSummary),
X = Pos.Right (tv),
Width = Dim.Fill ()
};
SetupGraph ();
w.Add (lbl);
@@ -169,6 +180,7 @@ public sealed class AnsiEscapeSequenceRequests : Scenario
w.Add (tv);
w.Add (_graphView);
w.Add (_lblSummary);
w.Add (_lblErrorSummary);
return w;
}
@@ -322,6 +334,21 @@ public sealed class AnsiEscapeSequenceRequests : Scenario
return $"Last:{last} U:{unique} T:{total}";
}
private string GetSummaryErrors ()
{
if (_errors.Count == 0)
{
return "No errors received yet";
}
string last = _errors.Last ().Value;
int unique = _errors.Values.Distinct ().Count ();
int total = _errors.Count;
return $"Last:{last} U:{unique} T:{total}";
}
private void HandleResponse (string response)
{
lock (_lockAnswers)
@@ -330,13 +357,25 @@ public sealed class AnsiEscapeSequenceRequests : Scenario
}
}
private void HandleResponseError (string response)
{
lock (_lockAnswers)
{
_errors.Add (DateTime.Now, response);
}
}
private void SendDar ()
{
_sends.Add (DateTime.Now);
AnsiEscapeSequenceRequest ansiRequest = AnsiEscapeSequenceRequestUtils.CSI_SendDeviceAttributes;
if (Application.Driver!.TryWriteAnsiRequest (ansiRequest))
{
HandleResponse (ansiRequest.AnsiEscapeSequenceResponse.Response);
HandleResponse (ansiRequest.AnsiEscapeSequenceResponse?.Response);
}
else
{
HandleResponseError (ansiRequest.AnsiEscapeSequenceResponse?.Response);
}
}
@@ -383,5 +422,8 @@ public sealed class AnsiEscapeSequenceRequests : Scenario
{
_lblSummary.Text = GetSummary ();
_lblSummary.SetNeedsDisplay ();
_lblErrorSummary.Text = GetSummaryErrors ();
_lblErrorSummary.SetNeedsDisplay ();
}
}