mirror of
https://github.com/gui-cs/Terminal.Gui.git
synced 2026-01-02 01:03:29 +01:00
Simplify request responses handling.
This commit is contained in:
@@ -175,11 +175,6 @@ public static class AnsiEscapeSequenceRequestUtils
|
||||
/// </summary>
|
||||
public static ConsoleKeyInfo []? IncompleteCkInfos { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Represent a response that was requested by an invalid terminator.
|
||||
/// </summary>
|
||||
public static string? InvalidRequestTerminator { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Decodes an ANSI escape sequence.
|
||||
/// </summary>
|
||||
@@ -348,6 +343,13 @@ public static class AnsiEscapeSequenceRequestUtils
|
||||
{
|
||||
AnsiEscapeSequenceRequests.Remove (seqReqStatus);
|
||||
|
||||
var ckiString = ToString (cki);
|
||||
|
||||
lock (seqReqStatus?.AnsiRequest._responseLock!)
|
||||
{
|
||||
seqReqStatus.AnsiRequest.RaiseResponseFromInput (ckiString);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -376,7 +378,13 @@ public static class AnsiEscapeSequenceRequestUtils
|
||||
// It's request response that wasn't handled by a valid request terminator
|
||||
System.Diagnostics.Debug.Assert (AnsiEscapeSequenceRequests.Statuses.Count > 0);
|
||||
|
||||
InvalidRequestTerminator = ToString (cki);
|
||||
if (AnsiEscapeSequenceRequests.Statuses.TryDequeue (out AnsiEscapeSequenceRequestStatus? result))
|
||||
{
|
||||
lock (result.AnsiRequest._responseLock)
|
||||
{
|
||||
result.AnsiRequest.RaiseResponseFromInput (ToString (cki));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
|
||||
@@ -245,7 +245,7 @@ internal class UnixMainLoop (ConsoleDriver consoleDriver) : IMainLoopDriver
|
||||
{
|
||||
if (_retries > 1)
|
||||
{
|
||||
if (AnsiEscapeSequenceRequests.Statuses.TryPeek (out AnsiEscapeSequenceRequestStatus? seqReqStatus) && seqReqStatus.AnsiRequest.AnsiEscapeSequenceResponse is { } && string.IsNullOrEmpty (seqReqStatus.AnsiRequest.AnsiEscapeSequenceResponse.Response))
|
||||
if (AnsiEscapeSequenceRequests.Statuses.TryPeek (out AnsiEscapeSequenceRequestStatus? seqReqStatus))
|
||||
{
|
||||
lock (seqReqStatus!.AnsiRequest._responseLock)
|
||||
{
|
||||
@@ -301,7 +301,7 @@ internal class UnixMainLoop (ConsoleDriver consoleDriver) : IMainLoopDriver
|
||||
out bool isMouse,
|
||||
out List<MouseFlags> mouseFlags,
|
||||
out Point pos,
|
||||
out AnsiEscapeSequenceRequestStatus seqReqStatus,
|
||||
out AnsiEscapeSequenceRequestStatus? seqReqStatus,
|
||||
AnsiEscapeSequenceRequestUtils.ProcessMouseEvent
|
||||
);
|
||||
|
||||
@@ -315,33 +315,6 @@ internal class UnixMainLoop (ConsoleDriver consoleDriver) : IMainLoopDriver
|
||||
return;
|
||||
}
|
||||
|
||||
if (seqReqStatus is { })
|
||||
{
|
||||
var ckiString = AnsiEscapeSequenceRequestUtils.ToString (cki);
|
||||
|
||||
lock (seqReqStatus.AnsiRequest._responseLock)
|
||||
{
|
||||
seqReqStatus.AnsiRequest.RaiseResponseFromInput (ckiString);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty (AnsiEscapeSequenceRequestUtils.InvalidRequestTerminator))
|
||||
{
|
||||
if (AnsiEscapeSequenceRequests.Statuses.TryDequeue (out AnsiEscapeSequenceRequestStatus? result))
|
||||
{
|
||||
lock (result.AnsiRequest._responseLock)
|
||||
{
|
||||
result.AnsiRequest.RaiseResponseFromInput (AnsiEscapeSequenceRequestUtils.InvalidRequestTerminator);
|
||||
|
||||
AnsiEscapeSequenceRequestUtils.InvalidRequestTerminator = null;
|
||||
}
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (newConsoleKeyInfo != default)
|
||||
{
|
||||
_pollDataQueue!.Enqueue (EnqueueKeyboardEvent (newConsoleKeyInfo));
|
||||
|
||||
@@ -394,34 +394,12 @@ internal class NetEvents : IDisposable
|
||||
return;
|
||||
}
|
||||
|
||||
if (seqReqStatus is { })
|
||||
{
|
||||
//HandleRequestResponseEvent (c1Control, code, values, terminating);
|
||||
//if (seqReqStatus is { })
|
||||
//{
|
||||
// HandleRequestResponseEvent (c1Control, code, values, terminating);
|
||||
|
||||
var ckiString = AnsiEscapeSequenceRequestUtils.ToString (cki);
|
||||
|
||||
lock (seqReqStatus.AnsiRequest._responseLock)
|
||||
{
|
||||
seqReqStatus.AnsiRequest.RaiseResponseFromInput (ckiString);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty (AnsiEscapeSequenceRequestUtils.InvalidRequestTerminator))
|
||||
{
|
||||
if (AnsiEscapeSequenceRequests.Statuses.TryDequeue (out AnsiEscapeSequenceRequestStatus? result))
|
||||
{
|
||||
lock (result.AnsiRequest._responseLock)
|
||||
{
|
||||
result.AnsiRequest.RaiseResponseFromInput (AnsiEscapeSequenceRequestUtils.InvalidRequestTerminator);
|
||||
|
||||
AnsiEscapeSequenceRequestUtils.InvalidRequestTerminator = null;
|
||||
}
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
// return;
|
||||
//}
|
||||
|
||||
if (newConsoleKeyInfo != default)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user