private BuildClient CreateClient( RequestLanguage?language = null, CompileFunc compileFunc = null, CompileOnServerFunc compileOnServerFunc = null) { language ??= RequestLanguage.CSharpCompile; compileFunc ??= delegate { return(0); }; compileOnServerFunc ??= delegate { throw new InvalidOperationException(); }; return(new BuildClient(language.Value, compileFunc, compileOnServerFunc)); }
internal static BuildClient CreateBuildClient( RequestLanguage language, ICompilerServerLogger logger) { // Create a client to run the build. Infinite timeout is used to account for the // case where these tests are run under extreme load. In high load scenarios the // client will correctly drop down to a local compilation if the server doesn't respond // fast enough. CompileOnServerFunc compileOnServerFunc = (request, pipeName, cancellationToken) => BuildServerConnection.RunServerBuildRequestAsync( request, pipeName, timeoutOverride: Timeout.Infinite, tryCreateServerFunc: (_, _) => false, logger, cancellationToken); var compileFunc = GetCompileFunc(language); return(new BuildClient(language, compileFunc, compileOnServerFunc)); }
internal BuildClient(RequestLanguage language, CompileFunc compileFunc, CompileOnServerFunc compileOnServerFunc) { _language = language; _compileFunc = compileFunc; _compileOnServerFunc = compileOnServerFunc; }
internal static int Run(IEnumerable <string> arguments, RequestLanguage language, CompileFunc compileFunc, CompileOnServerFunc compileOnServerFunc) { var sdkDir = GetSystemSdkDirectory(); if (RuntimeHostInfo.IsCoreClrRuntime) { // Register encodings for console // https://github.com/dotnet/roslyn/issues/10785 System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance); } var client = new BuildClient(language, compileFunc, compileOnServerFunc); var clientDir = GetClientDirectory(); var workingDir = Directory.GetCurrentDirectory(); var tempDir = BuildServerConnection.GetTempPath(workingDir); var buildPaths = new BuildPaths(clientDir: clientDir, workingDir: workingDir, sdkDir: sdkDir, tempDir: tempDir); var originalArguments = GetCommandLineArgs(arguments); return(client.RunCompilation(originalArguments, buildPaths).ExitCode); }