Skip to content

Commit 21f0cc1

Browse files
authored
Merge pull request #173 from tig/tznind-ansi-parser
Code review comments and cleanup
2 parents 1480f13 + 97558c2 commit 21f0cc1

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+299
-245
lines changed

Terminal.Gui/ConsoleDrivers/AnsiEscapeSequenceRequest.cs

+1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ public class AnsiEscapeSequenceRequest
1616
/// </summary>
1717
public required string Request { get; init; }
1818

19+
// BUGBUG: Nullable issue
1920
/// <summary>
2021
/// Invoked when the console responds with an ANSI response code that matches the
2122
/// <see cref="Terminator"/>

Terminal.Gui/ConsoleDrivers/AnsiResponseParser/AnsiRequestScheduler.cs

+15-31
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ public class AnsiRequestScheduler
1414
private readonly IAnsiResponseParser _parser;
1515

1616
/// <summary>
17-
/// Function for returning the current time. Use in unit tests to
18-
/// ensure repeatable tests.
17+
/// Function for returning the current time. Use in unit tests to
18+
/// ensure repeatable tests.
1919
/// </summary>
2020
internal Func<DateTime> Now { get; set; }
2121

@@ -54,6 +54,11 @@ public class AnsiRequestScheduler
5454

5555
private readonly DateTime _lastRun;
5656

57+
/// <summary>
58+
/// Creates a new instance.
59+
/// </summary>
60+
/// <param name="parser"></param>
61+
/// <param name="now"></param>
5762
public AnsiRequestScheduler (IAnsiResponseParser parser, Func<DateTime>? now = null)
5863
{
5964
_parser = parser;
@@ -67,11 +72,9 @@ public AnsiRequestScheduler (IAnsiResponseParser parser, Func<DateTime>? now = n
6772
/// </summary>
6873
/// <param name="request"></param>
6974
/// <returns><see langword="true"/> if request was sent immediately. <see langword="false"/> if it was queued.</returns>
70-
public bool SendOrSchedule (AnsiEscapeSequenceRequest request)
71-
{
72-
return SendOrSchedule (request, true);
73-
}
74-
private bool SendOrSchedule (AnsiEscapeSequenceRequest request,bool addToQueue)
75+
public bool SendOrSchedule (AnsiEscapeSequenceRequest request) { return SendOrSchedule (request, true); }
76+
77+
private bool SendOrSchedule (AnsiEscapeSequenceRequest request, bool addToQueue)
7578
{
7679
if (CanSend (request, out ReasonCannotSend reason))
7780
{
@@ -105,13 +108,13 @@ private bool SendOrSchedule (AnsiEscapeSequenceRequest request,bool addToQueue)
105108

106109
private void EvictStaleRequests ()
107110
{
108-
foreach (var stale in _lastSend.Where (v => IsStale (v.Value)).Select (k => k.Key))
111+
foreach (string stale in _lastSend.Where (v => IsStale (v.Value)).Select (k => k.Key))
109112
{
110113
EvictStaleRequests (stale);
111114
}
112115
}
113116

114-
private bool IsStale (DateTime dt) => Now () - dt > _staleTimeout;
117+
private bool IsStale (DateTime dt) { return Now () - dt > _staleTimeout; }
115118

116119
/// <summary>
117120
/// Looks to see if the last time we sent <paramref name="withTerminator"/>
@@ -155,14 +158,15 @@ public bool RunSchedule (bool force = false)
155158
}
156159

157160
// Get oldest request
158-
Tuple<AnsiEscapeSequenceRequest, DateTime>? opportunity = _queuedRequests.MinBy (r=>r.Item2);
161+
Tuple<AnsiEscapeSequenceRequest, DateTime>? opportunity = _queuedRequests.MinBy (r => r.Item2);
159162

160163
if (opportunity != null)
161164
{
162165
// Give it another go
163166
if (SendOrSchedule (opportunity.Item1, false))
164167
{
165168
_queuedRequests.Remove (opportunity);
169+
166170
return true;
167171
}
168172
}
@@ -172,7 +176,6 @@ public bool RunSchedule (bool force = false)
172176
return false;
173177
}
174178

175-
176179
private void Send (AnsiEscapeSequenceRequest r)
177180
{
178181
_lastSend.AddOrUpdate (r.Terminator, _ => Now (), (_, _) => Now ());
@@ -210,23 +213,4 @@ private bool ShouldThrottle (AnsiEscapeSequenceRequest r)
210213

211214
return false;
212215
}
213-
}
214-
215-
internal enum ReasonCannotSend
216-
{
217-
/// <summary>
218-
/// No reason given.
219-
/// </summary>
220-
None = 0,
221-
222-
/// <summary>
223-
/// The parser is already waiting for a request to complete with the given terminator.
224-
/// </summary>
225-
OutstandingRequest,
226-
227-
/// <summary>
228-
/// There have been too many requests sent recently, new requests will be put into
229-
/// queue to prevent console becoming unresponsive.
230-
/// </summary>
231-
TooManyRequests
232-
}
216+
}

0 commit comments

Comments
 (0)