/// <summary> /// Initializes a new instance of the <see cref="WebDescriptorActor"/> class. /// </summary> public WebDescriptorActor() { var description = new WebDescriptionResponse(); var config = Context?.System?.Settings?.Config; var servicesConfig = config?.GetConfig("ClusterKit.Web.Services"); var services = new List<ServiceDescription>(); if (servicesConfig != null) { foreach (var pair in servicesConfig.AsEnumerable()) { if (!pair.Value.IsObject()) { Context.GetLogger().Error($"ClusterKit.Web.Services configuration is broken, {pair.Key} is not a valid configuration"); continue; } var serviceConfig = servicesConfig.GetConfig(pair.Key); if (serviceConfig == null || serviceConfig.IsEmpty) { continue; } var serviceDescription = new ServiceDescription { ListeningPort = serviceConfig.GetInt("Port", 8080), LocalHostName = serviceConfig.GetString("LocalHostName"), PublicHostName = serviceConfig.GetString( "PublicHostName", "default"), Route = serviceConfig.GetString("Route") }; if (serviceDescription.Route == null) { Context.GetLogger().Error($"ClusterKit.Web.Services configuration is broken, {pair.Key} is not a valid configuration"); continue; } Context.GetLogger().Info($"Web publishing {pair.Key}: {serviceDescription.LocalHostName ?? "*"}:{serviceDescription.ListeningPort}/{serviceDescription.Route} for {serviceDescription.PublicHostName}"); services.Add(serviceDescription); } } description.Services = services.AsReadOnly(); this.webDescription = description; this.Receive<WebDescriptionRequest>(m => this.Sender.Tell(this.webDescription)); }
/// <summary> /// Equals operator for <seealso cref="ServiceDescription"/> /// </summary> /// <param name="other">The object to compare</param> /// <returns>Whether both objects are equal</returns> public bool Equals(ServiceDescription other) { return this.ListeningPort == other.ListeningPort && string.Equals(this.LocalHostName, other.LocalHostName) && string.Equals(this.PublicHostName, other.PublicHostName) && string.Equals(this.Route, other.Route); }