Пример #1
0
 /// <summary>
 /// Creates and starts a new <see cref="HttpServer"/> based on the specified
 /// <paramref name="configuration"/>.
 /// </summary>
 /// <param name="configuration">The configuration for this HTTP server instance.</param>
 /// <param name="cancellationToken">(Optional) A cancelation token that may be
 /// used by the caller to interrupt the HTTP server initialization process</param>
 /// <returns>Returns the fully initialized and listening HTTP server</returns>
 /// <seealso cref="HttpServerConfigurationSection"/>
 public static async Task<HttpServer> Start(IHttpServerConfiguration configuration,
     CancellationToken cancellationToken = default(CancellationToken))
 {
     var server = new HttpServer(configuration);
     await server.Init(cancellationToken);
     return server;
 }
Пример #2
0
 public HttpServer(IHttpServerConfiguration configuration, IHttpAuthChallenger authChallenger)
 {
     Configuration = configuration;
     InitializeListener();
     ClientFactory            = new ClientFactory(configuration);
     AuthenticationChallenger = authChallenger;
 }
Пример #3
0
        public HttpBasicAuthChallenger(IHttpServerConfiguration configuration, IAuthenticationValidator authenticationValidator)
        {
            Configuration = configuration;
            var challengeBody = new BasicAuthRequiredResponse(configuration.BaseUrl).ToString();

            challenge = Encoding.UTF8.GetBytes(challengeBody);
            Validator = authenticationValidator;
        }
Пример #4
0
        private static async Task <HttpServer> StartAsync(
            IHttpServerConfiguration configuration,
            CancellationToken cancellationToken = default(CancellationToken))
        {
            var server = new HttpServer(configuration);
            await server.Init(cancellationToken);

            return(server);
        }
Пример #5
0
        private HttpServer(IHttpServerConfiguration configuration)
        {
            _baseUri = configuration.BaseUri;

            _metricsCollector  = new HttpMetricsCollector();
            _diagnosticService = configuration.DiagnosticService;
            _diagnosticService.AddSink(_metricsCollector);

            _subscriptionTrackingService = configuration.SubscriptionTrackingService;
            _messageQueueingService      = configuration.MessageQueueingService;
            _messageJournal = configuration.MessageJournal;

            var transportServiceOptions = new HttpTransportServiceOptions(_baseUri, _messageQueueingService, _subscriptionTrackingService)
            {
                DiagnosticService = configuration.DiagnosticService,
                Endpoints         = configuration.Endpoints,
                MessageJournal    = configuration.MessageJournal,
                BypassTransportLocalDestination = configuration.BypassTransportLocalDestination
            };

            TransportService = new HttpTransportService(transportServiceOptions);

            _bus = new Bus(configuration, _baseUri, TransportService, _messageQueueingService);

            var authorizationService = configuration.AuthorizationService;

            _resourceRouter = new ResourceTypeDictionaryRouter(configuration.BaseUri)
            {
                { "message", new MessageController(TransportService.ReceiveMessage, authorizationService) },
                { "topic", new TopicController(_subscriptionTrackingService, configuration.Topics, authorizationService) },
                { "journal", new JournalController(configuration.MessageJournal, configuration.AuthorizationService) },
                { "metrics", new MetricsController(_metricsCollector) }
            };
            _httpListener = InitHttpListener(_baseUri, configuration.AuthenticationSchemes);

            var acceptBlockOptions = new ExecutionDataflowBlockOptions
            {
                CancellationToken = _cancellationTokenSource.Token
            };

            if (configuration.ConcurrencyLimit > 0)
            {
                acceptBlockOptions.MaxDegreeOfParallelism = configuration.ConcurrencyLimit;
            }

            _acceptBlock = new ActionBlock <HttpListenerContext>(async ctx => await Accept(ctx), acceptBlockOptions);
        }
Пример #6
0
 public HttpServer(IHttpServerConfiguration configuration)
 {
     _configuration = configuration;
     _socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
 }
Пример #7
0
 /// <summary>
 /// Creates and starts a new <see cref="HttpServer"/>
 /// </summary>
 /// <param name="configuration">The HTTP sever configuration</param>
 /// <param name="cancellationToken">(Optional) A cancellation token that can be used by the
 /// caller to cancel HTTP server initialization</param>
 /// <returns>Returns the fully initialized and listening HTTP server</returns>
 public static HttpServer Start(IHttpServerConfiguration configuration, CancellationToken cancellationToken = default(CancellationToken))
 {
     return(StartAsync(configuration, cancellationToken)
            .GetResultFromCompletionSource(cancellationToken));
 }
Пример #8
0
 public HttpServerConfigurator(IHttpServerConfiguration configuration)
 {
     _configuration = configuration;
 }
Пример #9
0
        private HttpServer(IHttpServerConfiguration configuration)
        {
            _baseUri = configuration.BaseUri;
            _subscriptionTrackingService = configuration.SubscriptionTrackingService;
            _messageQueueingService = configuration.MessageQueueingService;
            _messageJournalingService = configuration.MessageJournalingService;
            var endpoints = configuration.Endpoints;
            _transportService = new HttpTransportService(_baseUri, endpoints, _messageQueueingService, _messageJournalingService, _subscriptionTrackingService);
            _bus = new Bus(configuration, _baseUri, _transportService, _messageQueueingService);

            _resourceRouter = new ResourceTypeDictionaryRouter
            {
                {"message", new MessageController(_bus.HandleMessage)},
                {"topic", new TopicController(_subscriptionTrackingService, configuration.Topics)}
            };
            _httpListener = InitHttpListener(_baseUri, configuration.AuthenticationSchemes);
        }
Пример #10
0
 public HttpServer(IHttpServerConfiguration configuration, IHttpAuthChallenger authChallenger)
 {
     Configuration = configuration;
     InitializeListener();
     ClientFactory = new ClientFactory(configuration);
     AuthenticationChallenger = authChallenger;
 }
Пример #11
0
 public HttpServer(IHttpServerConfiguration configuration)
 {
     _configuration = configuration;
     _socket        = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
 }
Пример #12
0
 public ClientFactory(IHttpServerConfiguration configuration)
 {
     Configuration = configuration;
 }
Пример #13
0
 public ClientFactory(IHttpServerConfiguration configuration)
 {
     Configuration = configuration;
 }