public ReactiveHttpWebServer(
            IHttpListenerObservableFactory listenerFactory, 
            IEnumerable<IHttpRequestHandler>  handlers,
            IHttpServerOptions opt, 
            ILogger logger): base(logger)
        {

            if (handlers == null || !handlers.Any())
                throw new ArgumentException("No Http handlers specified for the WebServer");

            _logger = logger;
            _listener = listenerFactory.Create((configurator) =>
            {
                foreach (var ep in opt.Endpoints) 
                    configurator.AddPrefix(ep.ToString());

                _logger.Info($"Listens on: {string.Join(", ", opt.Endpoints.Select(p => p.ToString()))}");
            }, logger);

            _handlers = handlers.ToList();
            _handlers.Sort((x, y) => x.PriorityClass == y.PriorityClass
                ? x.Priority.CompareTo(y.Priority)
                : x.PriorityClass.CompareTo(y.PriorityClass)
            );
        }
Пример #2
0
        public ReactiveHttpWebServer(
            IHttpListenerObservableFactory listenerFactory,
            IEnumerable <IHttpRequestHandler> handlers,
            IHttpServerOptions opt,
            ILogger logger) : base(logger)
        {
            if (handlers == null || !handlers.Any())
            {
                throw new ArgumentException("No Http handlers specified for the WebServer");
            }

            _logger   = logger;
            _listener = listenerFactory.Create((configurator) =>
            {
                foreach (var ep in opt.Endpoints)
                {
                    configurator.AddPrefix(ep.ToString());
                }

                _logger.Info($"Listens on: {string.Join(", ", opt.Endpoints.Select(p => p.ToString()))}");
            }, logger);

            _handlers = handlers.ToList();
            _handlers.Sort((x, y) => x.PriorityClass == y.PriorityClass
                ? x.Priority.CompareTo(y.Priority)
                : x.PriorityClass.CompareTo(y.PriorityClass)
                           );
        }