private async Task LaunchQuickLaunch(BotPanelUserRequest request) { var launches = request.Qs.Clients.Select(w => new LegacyQuickLaunch(w)); foreach (var qs in launches) { await Launch(qs.Game, request, qs); await Sleep(request); } }
public async Task Launch(Game game, BotPanelUserRequest request, LegacyQuickLaunch quickLaunch) { await _logger.Log("Attempting to launch client for " + game + "."); var path = await _jarService.GetLatestJarPath(game); if (!await _jarService.HasLatestJar(game)) { await _jarService.DownloadLatestJar(game); } var command = "java -jar " + path; var args = new List <string>(); if (request.Game == Game.Rs3) { args.Add("-noverify"); } request.JvmArgs = string.IsNullOrEmpty(request.JvmArgs) ? "-Xmx768m -Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresses=true -Xss2m" : request.JvmArgs; args.AddRange(request.JvmArgs.Split(" ")); args.Add("-jar"); args.Add(path); if (quickLaunch != null) { args.Add("-qs"); args.Add(Convert.ToBase64String(Encoding.Default.GetBytes(JsonConvert.SerializeObject(quickLaunch)))); } await _logger.Log("Launching with JVM arguments:"); await _logger.Log(string.Join(' ', args)); Cli.Wrap("java") .SetArguments(args.ToArray()) .SetStandardOutputCallback(l => _logger.Log(l)) .SetStandardErrorCallback(l => _logger.Log($"Error: {l}")) .ExecuteAndForget(); await _logger.Log($"Successfully executed {command}. Client should be starting shortly."); await _logger.Log($"Any errors will be printed to the console."); await Task.Delay(1000); }
public async Task Launch(BotPanelUserRequest request) { if (request.Qs != null) { await LaunchQuickLaunch(request); } else { for (var i = 0; i < request.Count; i++) { await Launch(request.Game, request, request.Proxy != null?new LegacyQuickLaunch(new Client { Proxy = request.Proxy }) : null); await Sleep(request); } } }
private async Task Sleep(BotPanelUserRequest request) { await Task.Delay(request.Sleep < 1000?request.Sleep * 1000 : request.Sleep); }