mirror of
https://github.com/ckaczor/sqltoolsservice.git
synced 2026-01-15 17:23:32 -05:00
* 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
55 lines
1.7 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|