Example #1
0
        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...");
        }
Example #2
0
        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);
            }
        }