public static void SpawnShim(ConfigurationManager configurationManager, string socket, string configFile) { if (configurationManager == null) { throw new ArgumentNullException("configurationManager"); } if (socket == null) { throw new ArgumentNullException("socket"); } if (configFile == null) { throw new ArgumentNullException("configFile"); } if (configFile.Length == 0) { throw new ArgumentException("Config file name can't be empty", "configFile"); } var builder = new ProcessArgumentBuilder(); builder.AddSingle(socket, GetFastCgiCommand(configurationManager.FastCgiCommand)); builder.Add("--ondemand"); builder.AddFormatSafe("--configfile '{0}'", configFile); var arguments = builder.ToString(); var startInfo = new ProcessStartInfo { FileName = configurationManager.ShimCommand, Arguments = arguments, UseShellExecute = false }; if ((configurationManager.LogLevels & LogLevel.Debug) != LogLevel.None) { startInfo.EnvironmentVariables.Add("DEBUG", "y"); } if (configurationManager.Verbose) { startInfo.EnvironmentVariables.Add("VERBOSE", "y"); } var process = new Process { StartInfo = startInfo }; Logger.Write(LogLevel.Debug, "Spawning shim \"{0} {1}\"", configurationManager.ShimCommand, process.StartInfo.Arguments); process.Start(); }
static string BuildArguments(ConfigurationManager configurationManager, string shimSocket, string root, string onDemandSock) { var builder = new ProcessArgumentBuilder(); builder.AddSingle(shimSocket, GetFastCgiCommand(configurationManager.FastCgiCommand)); if (configurationManager.Verbose) { builder.Add("--verbose"); } builder.Add("--ondemand"); builder.AddFormatSafe("--applications /:'{0}'", root); builder.Add("--idle-time", configurationManager.ChildIdleTime); builder.AddFormatSafe("--ondemandsock 'unix://660@{0}'", onDemandSock); builder.AddFormat("--loglevels {0}", configurationManager.LogLevels); builder.AddFormatSafe("--name '{0}'", Path.GetFileName(root)); var arguments = builder.ToString(); return(arguments); }