public async Task Server_HandleRequest_Success() { LspConnection clientConnection = await CreateClientConnection(); LspConnection serverConnection = await CreateServerConnection(); var clientDispatcher = new LspDispatcher(); clientDispatcher.HandleRequest <TestRequest, TestResponse>("test", (request, cancellationToken) => { Log.LogInformation("Got request: {@Request}", request); return(Task.FromResult(new TestResponse { Value = request.Value.ToString() })); }); clientConnection.Connect(clientDispatcher); serverConnection.Connect(new LspDispatcher()); TestResponse response = await serverConnection.SendRequest <TestResponse>("test", new TestRequest { Value = 1234 }); Assert.Equal("1234", response.Value); Log.LogInformation("Got response: {@Response}", response); serverConnection.Disconnect(flushOutgoing: true); clientConnection.Disconnect(); await Task.WhenAll(clientConnection.HasHasDisconnected, serverConnection.HasHasDisconnected); }
public async Task Client_HandleCommandRequest_Success() { LspConnection clientConnection = await CreateClientConnection(); LspConnection serverConnection = await CreateServerConnection(); var serverDispatcher = new LspDispatcher(); serverDispatcher.HandleRequest <TestRequest>("test", (request, cancellationToken) => { Log.LogInformation("Got request: {@Request}", request); Assert.Equal(1234, request.Value); return(Task.CompletedTask); }); serverConnection.Connect(serverDispatcher); clientConnection.Connect(new LspDispatcher()); await clientConnection.SendRequest("test", new TestRequest { Value = 1234 }); clientConnection.Disconnect(flushOutgoing: true); serverConnection.Disconnect(); await Task.WhenAll(clientConnection.HasHasDisconnected, serverConnection.HasHasDisconnected); }