protected override async Task <BuildResponse> RunServerCompilation(List <string> arguments, BuildPaths buildPaths, string pipeName, string keepAlive, string libDirectory, CancellationToken cancellationToken) { var client = new TcpClient(); var port = int.Parse(pipeName); await client.ConnectAsync("127.0.0.1", port : port).ConfigureAwait(true); var request = BuildRequest.Create(_language, buildPaths.WorkingDirectory, arguments, keepAlive, libDirectory); await request.WriteAsync(client.GetStream(), cancellationToken).ConfigureAwait(true); var ret = await BuildResponse.ReadAsync(client.GetStream(), cancellationToken).ConfigureAwait(true); return(ret); }
protected override int HandleResponse(BuildResponse response, List<string> arguments, BuildPaths buildPaths) { // Override the base so we don't print the compilation output to Console.Out return 0; }
/// <summary> /// Handle a response from the server, reporting messages and returning /// the appropriate exit code. /// </summary> private int HandleResponse(BuildResponse response, string pathToTool, string responseFileCommands, string commandLineCommands) { switch (response.Type) { case BuildResponse.ResponseType.MismatchedVersion: LogErrorOutput(CommandLineParser.MismatchedVersionErrorText); return -1; case BuildResponse.ResponseType.Completed: var completedResponse = (CompletedBuildResponse)response; LogMessages(completedResponse.Output, StandardOutputImportanceToUse); if (LogStandardErrorAsError) { LogErrorOutput(completedResponse.ErrorOutput); } else { LogMessages(completedResponse.ErrorOutput, StandardErrorImportanceToUse); } return completedResponse.ReturnCode; case BuildResponse.ResponseType.Rejected: case BuildResponse.ResponseType.AnalyzerInconsistency: return base.ExecuteTool(pathToTool, responseFileCommands, commandLineCommands); default: throw new InvalidOperationException("Encountered unknown response type"); } }
/// <summary> /// Handle a response from the server, reporting messages and returning /// the appropriate exit code. /// </summary> private int HandleResponse(BuildResponse response, string pathToTool, string responseFileCommands, string commandLineCommands) { if (response.Type != BuildResponse.ResponseType.Completed) { ValidateBootstrapUtil.AddFailedServerConnection(); } switch (response.Type) { case BuildResponse.ResponseType.Completed: var completedResponse = (CompletedBuildResponse)response; LogMessages(completedResponse.Output, StandardOutputImportanceToUse); if (LogStandardErrorAsError) { LogErrorOutput(completedResponse.ErrorOutput); } else { LogMessages(completedResponse.ErrorOutput, StandardErrorImportanceToUse); } return completedResponse.ReturnCode; case BuildResponse.ResponseType.MismatchedVersion: LogErrorOutput("Roslyn compiler server reports different protocol version than build task."); return base.ExecuteTool(pathToTool, responseFileCommands, commandLineCommands); case BuildResponse.ResponseType.Rejected: case BuildResponse.ResponseType.AnalyzerInconsistency: return base.ExecuteTool(pathToTool, responseFileCommands, commandLineCommands); default: LogErrorOutput($"Recieved an unrecognized response from the server: {response.Type}"); return base.ExecuteTool(pathToTool, responseFileCommands, commandLineCommands); } }
protected virtual int HandleResponse(BuildResponse response, List<string> arguments, BuildPaths buildPaths) { switch (response.Type) { case BuildResponse.ResponseType.MismatchedVersion: Console.Error.WriteLine(CommandLineParser.MismatchedVersionErrorText); return CommonCompiler.Failed; case BuildResponse.ResponseType.Completed: var completedResponse = (CompletedBuildResponse)response; return ConsoleUtil.RunWithOutput( completedResponse.Utf8Output, (outWriter, errorWriter) => { outWriter.Write(completedResponse.Output); errorWriter.Write(completedResponse.ErrorOutput); return completedResponse.ReturnCode; }); case BuildResponse.ResponseType.Rejected: case BuildResponse.ResponseType.AnalyzerInconsistency: return RunLocalCompilation(arguments, buildPaths.ClientDirectory, buildPaths.SdkDirectory); default: throw new InvalidOperationException("Encountered unknown response type"); } }
protected override RunCompilationResult HandleResponse(BuildResponse response, string[] arguments, BuildPaths buildPaths, TextWriter textWriter) { // Override the base so we don't print the compilation output to Console.Out return RunCompilationResult.Succeeded; }
protected virtual RunCompilationResult HandleResponse(BuildResponse response, string[] arguments, BuildPaths buildPaths, TextWriter textWriter) { switch (response.Type) { case BuildResponse.ResponseType.MismatchedVersion: Console.Error.WriteLine(CommandLineParser.MismatchedVersionErrorText); return RunCompilationResult.Failed; case BuildResponse.ResponseType.Completed: var completedResponse = (CompletedBuildResponse)response; return ConsoleUtil.RunWithUtf8Output(completedResponse.Utf8Output, textWriter, tw => { tw.Write(completedResponse.Output); return new RunCompilationResult(completedResponse.ReturnCode, ranOnServer: true); }); case BuildResponse.ResponseType.Rejected: case BuildResponse.ResponseType.AnalyzerInconsistency: var exitCode = RunLocalCompilation(arguments, buildPaths, textWriter); return new RunCompilationResult(exitCode); default: throw new InvalidOperationException("Encountered unknown response type"); } }