public static IDisposable Create(AppFunc app, IDictionary <string, object> properties) { var factory = new Http.ServerFactory(); var created = new List <IDisposable>(); var addresses = Addresses(properties); if (addresses != null) { foreach (var address in addresses) { var port = Port(address); var hostname = Host(address); if (hostname == null || hostname == "*" || hostname == "+") { created.Add(factory.Create(app, new IPEndPoint(IPAddress.Any, port))); Kickstart(new IPEndPoint(IPAddress.Loopback, port)); } else { foreach (var ipAddress in Dns.GetHostAddresses(hostname)) { var endpoint = new IPEndPoint(ipAddress, port); created.Add(factory.Create(app, endpoint)); Kickstart(endpoint); } } } } return(new Disposable( () => { foreach (var disposable in created) { disposable.Dispose(); } })); }
public static IDisposable Create(AppFunc app, IDictionary<string, object> properties) { var factory = new Http.ServerFactory(); var created = new List<IDisposable>(); var addresses = Addresses(properties); if (addresses != null) { foreach (var address in addresses) { var port = Port(address); var hostname = Host(address); if (hostname == null || hostname == "*" || hostname == "+") { created.Add(factory.Create(app, new IPEndPoint(IPAddress.Any, port))); Kickstart(new IPEndPoint(IPAddress.Loopback, port)); } else { foreach (var ipAddress in Dns.GetHostAddresses(hostname)) { var endpoint = new IPEndPoint(ipAddress, port); created.Add(factory.Create(app, endpoint)); Kickstart(endpoint); } } } } return new Disposable( () => { foreach (var disposable in created) { disposable.Dispose(); } }); }