Remove nop use of Console.OpenStandardInput (#49)
This commit is contained in:
parent
967d7a4cc8
commit
e187ebacc4
1 changed files with 29 additions and 31 deletions
|
|
@ -105,48 +105,46 @@ public sealed class StdioServerTransport : TransportBase, IServerTransport
|
||||||
while (!cancellationToken.IsCancellationRequested)
|
while (!cancellationToken.IsCancellationRequested)
|
||||||
{
|
{
|
||||||
_logger.TransportWaitingForMessage(EndpointName);
|
_logger.TransportWaitingForMessage(EndpointName);
|
||||||
using (Console.OpenStandardInput())
|
|
||||||
|
var reader = Console.In;
|
||||||
|
var line = await reader.ReadLineAsync(cancellationToken).ConfigureAwait(false);
|
||||||
|
if (line == null)
|
||||||
{
|
{
|
||||||
var reader = Console.In;
|
_logger.TransportEndOfStream(EndpointName);
|
||||||
var line = await reader.ReadLineAsync(cancellationToken).ConfigureAwait(false);
|
break;
|
||||||
if (line == null)
|
}
|
||||||
{
|
|
||||||
_logger.TransportEndOfStream(EndpointName);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (string.IsNullOrWhiteSpace(line))
|
if (string.IsNullOrWhiteSpace(line))
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
_logger.TransportReceivedMessage(EndpointName, line);
|
_logger.TransportReceivedMessage(EndpointName, line);
|
||||||
|
|
||||||
try
|
try
|
||||||
|
{
|
||||||
|
var message = JsonSerializer.Deserialize<IJsonRpcMessage>(line, _jsonOptions);
|
||||||
|
if (message != null)
|
||||||
{
|
{
|
||||||
var message = JsonSerializer.Deserialize<IJsonRpcMessage>(line, _jsonOptions);
|
string messageId = "(no id)";
|
||||||
if (message != null)
|
if (message is IJsonRpcMessageWithId messageWithId)
|
||||||
{
|
{
|
||||||
string messageId = "(no id)";
|
messageId = messageWithId.Id.ToString();
|
||||||
if (message is IJsonRpcMessageWithId messageWithId)
|
|
||||||
{
|
|
||||||
messageId = messageWithId.Id.ToString();
|
|
||||||
}
|
|
||||||
_logger.TransportReceivedMessageParsed(EndpointName, messageId);
|
|
||||||
await WriteMessageAsync(message, cancellationToken).ConfigureAwait(false);
|
|
||||||
_logger.TransportMessageWritten(EndpointName, messageId);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
_logger.TransportMessageParseUnexpectedType(EndpointName, line);
|
|
||||||
}
|
}
|
||||||
|
_logger.TransportReceivedMessageParsed(EndpointName, messageId);
|
||||||
|
await WriteMessageAsync(message, cancellationToken).ConfigureAwait(false);
|
||||||
|
_logger.TransportMessageWritten(EndpointName, messageId);
|
||||||
}
|
}
|
||||||
catch (JsonException ex)
|
else
|
||||||
{
|
{
|
||||||
_logger.TransportMessageParseFailed(EndpointName, line, ex);
|
_logger.TransportMessageParseUnexpectedType(EndpointName, line);
|
||||||
// Continue reading even if we fail to parse a message
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
catch (JsonException ex)
|
||||||
|
{
|
||||||
|
_logger.TransportMessageParseFailed(EndpointName, line, ex);
|
||||||
|
// Continue reading even if we fail to parse a message
|
||||||
|
}
|
||||||
}
|
}
|
||||||
_logger.TransportExitingReadMessagesLoop(EndpointName);
|
_logger.TransportExitingReadMessagesLoop(EndpointName);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue