Skip to content

Commit 68f6b1f

Browse files
committed
Upgrade to JsonRpc.Standard 0.3.1.
1 parent 86ad2aa commit 68f6b1f

File tree

3 files changed

+24
-33
lines changed

3 files changed

+24
-33
lines changed

DemoLanguageServer/DemoLanguageServer.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@
1212
</ItemGroup>
1313

1414
<ItemGroup>
15-
<PackageReference Include="CXuesong.JsonRpc.Dataflow" Version="0.3.0" />
16-
<PackageReference Include="CXuesong.JsonRpc.Standard" Version="0.3.0" />
15+
<PackageReference Include="CXuesong.JsonRpc.Standard" Version="0.3.1" />
16+
<PackageReference Include="CXuesong.JsonRpc.Streams" Version="0.3.1" />
1717
<PackageReference Include="Microsoft.Extensions.Logging" Version="1.1.1" />
1818
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="1.1.1" />
1919
<PackageReference Include="System.Diagnostics.TraceSource" Version="4.3.0" />

DemoLanguageServer/Program.cs

Lines changed: 21 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,15 @@
11
//#define WAIT_FOR_DEBUGGER
2-
//#define USE_CONSOLE_READER
32

43
using System;
54
using System.Diagnostics;
65
using System.IO;
76
using System.Linq;
87
using System.Reflection;
98
using System.Threading;
10-
using JsonRpc.Dataflow;
119
using JsonRpc.Standard.Client;
1210
using JsonRpc.Standard.Contracts;
1311
using JsonRpc.Standard.Server;
12+
using JsonRpc.Streams;
1413
using LanguageServer.VsCode;
1514
using Microsoft.Extensions.Logging;
1615
using Microsoft.Extensions.Logging.Debug;
@@ -33,53 +32,50 @@ static void Main(string[] args)
3332
logWriter.AutoFlush = true;
3433
}
3534
using (logWriter)
36-
#if !USE_CONSOLE_READER
3735
using (var cin = Console.OpenStandardInput())
3836
using (var bcin = new BufferedStream(cin))
39-
#endif
4037
using (var cout = Console.OpenStandardOutput())
38+
using (var reader = new PartwiseStreamMessageReader(bcin))
39+
using (var writer = new PartwiseStreamMessageWriter(cout))
4140
{
4241
var contractResolver = new JsonRpcContractResolver
4342
{
4443
NamingStrategy = new CamelCaseJsonRpcNamingStrategy(),
4544
ParameterValueConverter = new CamelCaseJsonValueConverter(),
4645
};
47-
var client = new JsonRpcClient();
46+
var clientHandler = new StreamRpcClientHandler();
47+
var client = new JsonRpcClient(clientHandler);
4848
if (debugMode)
4949
{
50-
client.MessageSending += (_, e) =>
50+
// We want to capture log all the LSP server-to-client calls as well
51+
clientHandler.MessageSending += (_, e) =>
5152
{
5253
lock (logWriter) logWriter.WriteLine("<C{0}", e.Message);
5354
};
54-
client.MessageReceiving += (_, e) =>
55+
clientHandler.MessageReceiving += (_, e) =>
5556
{
5657
lock (logWriter) logWriter.WriteLine(">C{0}", e.Message);
5758
};
5859
}
5960
// Configure & build service host
6061
var session = new LanguageServerSession(client, contractResolver);
61-
var host = BuildServiceHost(session, logWriter, contractResolver, debugMode);
62-
// Connect the datablocks
63-
var target = new PartwiseStreamMessageTargetBlock(cout);
64-
#if USE_CONSOLE_READER
65-
66-
var source = new ByLineTextMessageSourceBlock(Console.In);
67-
#else
68-
var source = new PartwiseStreamMessageSourceBlock(bcin);
69-
#endif
70-
using (host.Attach(source, target))
71-
// We want to capture log all the server-to-client calls as well
72-
using (client.Attach(source, target))
73-
// If we want server to stop, just stop the "source"
74-
using (session.CancellationToken.Register(() => source.Complete()))
62+
var host = BuildServiceHost(logWriter, contractResolver, debugMode);
63+
var serverHandler = new StreamRpcServerHandler(host,
64+
StreamRpcServerHandlerOptions.ConsistentResponseSequence |
65+
StreamRpcServerHandlerOptions.SupportsRequestCancellation);
66+
serverHandler.DefaultFeatures.Set(session);
67+
// If we want server to stop, just stop the "source"
68+
using (serverHandler.Attach(reader, writer))
69+
using (clientHandler.Attach(reader, writer))
7570
{
71+
// Wait for the "stop" request.
7672
session.CancellationToken.WaitHandle.WaitOne();
7773
}
78-
logWriter.WriteLine("Exited");
74+
logWriter?.WriteLine("Exited");
7975
}
8076
}
8177

82-
private static DataflowRpcServiceHost BuildServiceHost(LanguageServerSession session, TextWriter logWriter,
78+
private static IJsonRpcServiceHost BuildServiceHost(TextWriter logWriter,
8379
IJsonRpcContractResolver contractResolver, bool debugMode)
8480
{
8581
var loggerFactory = new LoggerFactory();
@@ -101,13 +97,8 @@ private static DataflowRpcServiceHost BuildServiceHost(LanguageServerSession ses
10197
lock (logWriter) logWriter.WriteLine("< {0}", context.Response);
10298
});
10399
}
104-
var host = builder.Build();
105-
var features = new FeatureCollection();
106-
features.Set(session);
107-
return new DataflowRpcServiceHost(host, features,
108-
DataflowRpcServiceHostOptions.ConsistentResponseSequence |
109-
DataflowRpcServiceHostOptions.SupportsRequestCancellation);
100+
return builder.Build();
110101
}
111-
102+
112103
}
113104
}

LanguageServer.VsCode/LanguageServer.VsCode.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
</ItemGroup>
3737

3838
<ItemGroup>
39-
<PackageReference Include="CXuesong.JsonRpc.Standard" Version="0.3.0" />
39+
<PackageReference Include="CXuesong.JsonRpc.Standard" Version="0.3.1" />
4040
<PackageReference Include="Newtonsoft.Json" Version="10.0.2" />
4141
</ItemGroup>
4242

0 commit comments

Comments
 (0)