Beispiel #1
0
        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;
 }
Beispiel #3
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");
            }
        }
Beispiel #4
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)
        {
            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);
            }
        }
Beispiel #5
0
        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;
 }
Beispiel #7
0
        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");
            }
        }