private void StartupConnector(Uri serverUri) { // Find the right server uri var serverUriObj = ConfigObject?.connection?.serverUri; if (serverUriObj != null && serverUri.OriginalString != serverUriObj.Value) { logger.Warn($"Write the correct server uri '{serverUri?.AbsoluteUri?.Trim('/')}' in the config file."); logger.Warn(">>> Run in alternative mode. <<<"); } ConfigObject.connection.serverUri = serverUri; ConnectorConfig config = JsonConvert.DeserializeObject <ConnectorConfig>(ConfigObject.ToString()); if (config.StopTimeout < 5) { config.StopTimeout = 5; } //Start Rest Service var rootContentFolder = HelperUtilities.GetFullPathFromApp(config.WorkingDir); if (!config.UseExternalRestService) { var arguments = new List <string>() { $"--Mode=NoService", $"--Urls={config.RestServiceUrl}", $"--contentRoot={rootContentFolder}" }; StartRestServer(arguments.ToArray()); } var mainVersion = ConnectorVersion.GetMainVersion(); config.PackageVersions.Add($"AnalyticsGate Version: {mainVersion}"); config.PackageVersion = mainVersion; logger.Info($"Connector Version: {mainVersion}"); config.ExternalPackageJson = ConnectorVersion.GetExternalPackageJson(); var packages = JArray.Parse(config.ExternalPackageJson); foreach (var package in packages) { logger.Info($"Package: {JsonConvert.SerializeObject(package)}"); } logger.Debug($"Plattfom: {config.OS}"); logger.Debug($"Architecture: {config.Architecture}"); logger.Debug($"Framework: {config.Framework}"); logger.Debug("Service running..."); logger.Debug($"Start Service on Port \"{config.BindingPort}\" with Host \"{config.BindingHost}"); logger.Debug($"Server start..."); // Wait for slow IO perfomance if (config.StartRestTimeout < 0) { config.StartRestTimeout = 0; } if (config.StartRestTimeout > 120) { config.StartRestTimeout = 120; } logger.Debug($"Connector start timeout is '{config.StartRestTimeout}' seconds..."); Thread.Sleep(config.StartRestTimeout * 1000); worker = new ConnectorWorker(config, cts); worker.CleanupOldFiles(); worker.RestServiceHealthCheck(); logger.Info($"Start GRPC listening on port '{config.BindingPort}' on Host '{config.BindingHost}'..."); server = new Server() { Services = { Connector.BindService(worker) }, Ports = { new ServerPort(config.BindingHost, config.BindingPort, ServerCredentials.Insecure) }, }; server.Start(); logger.Info($"The GRPC server is ready..."); }
static void Main(string[] args) { try { SetLoggerSettings("App.config"); if (args.Length > 0 && args[0] == "VersionNumber") { File.WriteAllText(Path.Combine(AppContext.BaseDirectory, "Version.txt"), ConnectorVersion.GetMainVersion()); return; } ServiceRunner <ConnectorService> .Run(config => { config.SetDisplayName("AnalyticsGate Connector"); config.SetDescription("AGR Connector Service for Qlik"); var name = config.GetDefaultName(); config.Service(serviceConfig => { serviceConfig.ServiceFactory((extraArguments, controller) => { Service = new ConnectorService(); return(Service); }); serviceConfig.OnStart((service, extraParams) => { logger.Debug($"Service {name} started"); service.Start(); }); serviceConfig.OnStop(service => { logger.Debug($"Service {name} stopped"); service.Stop(); }); serviceConfig.OnError(ex => { logger.Error($"Service Exception: {ex}"); }); }); }); Environment.Exit(0); } catch (Exception ex) { logger.Error(ex); Environment.Exit(1); } }