Files
sqltoolsservice/external/Microsoft.SqlTools.Hosting.v2/Channels/StdioServerChannel.cs
Karl Burtram ccf95aed77 Move unused forked code to external directory (#1192)
* Move unused forked code to external directory

* Fix SLN build errors

* Add back resource provider core since it's referenced by main resource provider project

* Update PackageProjects step of pipeline
2021-04-16 15:33:35 -07:00

55 lines
1.7 KiB
C#

//
// Copyright (c) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
//
using System.IO;
using System.Text;
using System.Threading.Tasks;
using Microsoft.SqlTools.Hosting.Protocol;
namespace Microsoft.SqlTools.Hosting.Channels
{
/// <summary>
/// Provides a server implementation for the standard I/O channel.
/// When started in a process, attaches to the console I/O streams
/// to communicate with the client that launched the process.
/// </summary>
public class StdioServerChannel : ChannelBase
{
private Stream inputStream;
private Stream outputStream;
public override void Start()
{
#if !NanoServer
// Ensure that the console is using UTF-8 encoding
System.Console.InputEncoding = Encoding.UTF8;
System.Console.OutputEncoding = Encoding.UTF8;
#endif
// Open the standard input/output streams
inputStream = System.Console.OpenStandardInput();
outputStream = System.Console.OpenStandardOutput();
// Set up the reader and writer
MessageReader = new MessageReader(inputStream);
MessageWriter = new MessageWriter(outputStream);
IsConnected = true;
}
public override void Stop()
{
// No default implementation needed, streams will be
// disposed on process shutdown.
}
public override Task WaitForConnection()
{
// We're always connected immediately in the stdio channel
return Task.FromResult(true);
}
}
}