예제 #1
0
        private BuildResponse ServeBuildRequestCore(BuildRequest buildRequest, CancellationToken cancellationToken)
        {
            var            request = BuildProtocolUtil.GetRunRequest(buildRequest);
            CommonCompiler compiler;

            if (!_compilerServerHost.TryCreateCompiler(request, out compiler))
            {
                // We can't do anything with a request we don't know about.
                Log($"Got request with id '{request.Language}'");
                return(new CompletedBuildResponse(-1, false, "", ""));
            }

            Log($"CurrentDirectory = '{request.CurrentDirectory}'");
            Log($"LIB = '{request.LibDirectory}'");
            for (int i = 0; i < request.Arguments.Length; ++i)
            {
                Log($"Argument[{i}] = '{request.Arguments[i]}'");
            }

            bool utf8output = compiler.Arguments.Utf8Output;

            if (!_compilerServerHost.CheckAnalyzers(request.CurrentDirectory, compiler.Arguments.AnalyzerReferences))
            {
                return(new AnalyzerInconsistencyBuildResponse());
            }

            Log($"****Running {request.Language} compiler...");
            TextWriter output     = new StringWriter(CultureInfo.InvariantCulture);
            int        returnCode = compiler.Run(output, cancellationToken);

            Log($"****{request.Language} Compilation complete.\r\n****Return code: {returnCode}\r\n****Output:\r\n{output.ToString()}\r\n");
            return(new CompletedBuildResponse(returnCode, utf8output, output.ToString(), ""));
        }
예제 #2
0
            static Task <BuildResponse> ProcessCompilationRequestCore(ICompilerServerHost compilerServerHost, BuildRequest buildRequest, CancellationToken cancellationToken)
            {
                Func <BuildResponse> func = () =>
                {
                    var request  = BuildProtocolUtil.GetRunRequest(buildRequest);
                    var response = compilerServerHost.RunCompilation(request, cancellationToken);
                    return(response);
                };

                var task = new Task <BuildResponse>(func, cancellationToken, TaskCreationOptions.LongRunning);

                task.Start();
                return(task);
            }
        private Task <BuildResponse> ServeBuildRequestAsync(BuildRequest buildRequest, CancellationToken cancellationToken)
        {
            Func <BuildResponse> func = () =>
            {
                var request  = BuildProtocolUtil.GetRunRequest(buildRequest);
                var response = _compilerServerHost.RunCompilation(request, cancellationToken);
                return(response);
            };

            var task = new Task <BuildResponse>(func, cancellationToken, TaskCreationOptions.LongRunning);

            task.Start();
            return(task);
        }
예제 #4
0
        protected virtual Task <BuildResponse> ServeBuildRequest(BuildRequest buildRequest, CancellationToken cancellationToken)
        {
            Func <BuildResponse> func = () =>
            {
                // Do the compilation
                Log("Begin compilation");

                var request  = BuildProtocolUtil.GetRunRequest(buildRequest);
                var response = _compilerServerHost.RunCompilation(request, cancellationToken);

                Log("End compilation");
                return(response);
            };

            var task = new Task <BuildResponse>(func, cancellationToken, TaskCreationOptions.LongRunning);

            task.Start();
            return(task);
        }