public BlinkService(BlinkConfig config) { _logger = LogManager.GetCurrentClassLogger(); _config = config; _logger.Debug("Initializing Timer"); /*_pollingTimer = new Timer(_config.TeamCityConfig.PollingInterval) * { * Enabled = true, * AutoReset = true * };*/ _blink = new Blink(); _logger.Debug("Initialize TeamCity connection"); //_teamCityClient = new TeamCityClient(_config.TeamCityConfig.HostName, _config.TeamCityConfig.UseSsl); _setColor = color => { _logger.Debug("Updating Blink(1) indicator"); if (_blink.IsConnected) { _blink.SetColor(color); } }; var server = new Server { Services = { CIPluginHost.BindService(new CIPluginHostImpl()) } }; }
public void TestSerializeConfig() { var targetPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "test.json"); var blinkConfig = new BlinkConfig { ColorConfig = new ColorConfig { SuccessColor = Color.GreenYellow, ErrorColor = Color.Red } }; File.WriteAllText(targetPath, JsonConvert.SerializeObject(blinkConfig)); }
public static void Main(string[] args) { Logger.Debug("Starting service"); try { _blinkConfig = JsonConvert.DeserializeObject <BlinkConfig>(File.ReadAllText(ConfigFilePath)); } catch (Exception e) { Logger.Error(e, $"Failed to read configuration from path {ConfigFilePath}"); } if (_blinkConfig == null) { return; } HostFactory.Run(configurator => { configurator.Service <BlinkService>(service => { service.ConstructUsing(() => new BlinkService(_blinkConfig)); service.WhenStarted(s => s.OnStarting()); service.WhenStopped(s => s.OnStopping()); service.WhenShutdown(s => s.Dispose()); }); configurator.StartAutomaticallyDelayed(); configurator.EnableShutdown(); configurator.RunAsLocalSystem(); configurator.SetServiceName("TCBlinkService"); configurator.SetDisplayName("Teamcity Blink(1) Indicator"); configurator.SetDescription("TeamCity Blink(1) Indicator"); configurator.DependsOnEventLog(); configurator.OnException(exception => { Logger.Error(exception); }); }); }