/// <inheritdoc /> /// <summary> /// Initializes a new <see cref="T:Platibus.IIS.PlatibusHttpHandler" /> with the configuration that will /// eventually be returned by the supplied <paramref name="configuration" /> task. /// </summary> /// <param name="configuration">A task whose result is the configuration to use for this /// handler</param> public PlatibusHttpHandler(IIISConfiguration configuration) { _configuration = configuration ?? throw new ArgumentNullException(nameof(configuration)); var managedBus = BusManager.SingletonInstance.GetManagedBus(_configuration); Bus = managedBus.Bus; _resourceRouter = InitResourceRouter(_configuration, managedBus.TransportService); }
/// <inheritdoc /> /// <summary> /// Initializes a new <see cref="T:Platibus.IIS.PlatibusHttpHandler" /> with the configuration that will /// eventually be returned by the supplied <paramref name="configuration" /> task. /// </summary> /// <param name="configuration">A task whose result is the configuration to use for this /// handler</param> public PlatibusHttpHandler(Task <IIISConfiguration> configuration) : this(configuration?.GetResultFromCompletionSource()) { _configuration = configuration?.GetResultFromCompletionSource() ?? throw new ArgumentNullException(nameof(configuration)); var managedBus = BusManager.SingletonInstance.GetManagedBus(_configuration); Bus = managedBus.Bus; _resourceRouter = InitResourceRouter(_configuration, managedBus.TransportService); }
/// <inheritdoc /> /// <summary> /// Inititializes a new <see cref="T:Platibus.IIS.PlatibusHttpHandler" /> with the specified /// <paramref name="bus" /> and <paramref name="configuration" /> /// </summary> /// <param name="configuration">The bus configuration</param> /// <param name="bus">The initialized bus instance</param> /// <param name="transportService"></param> /// <remarks> /// Used internally by <see cref="T:Platibus.IIS.PlatibusHttpModule" />. This method bypasses the /// configuration cache and singleton diagnostic service and metrics collector. /// </remarks> internal PlatibusHttpHandler(IIISConfiguration configuration, IBus bus, HttpTransportService transportService) { _configuration = configuration ?? throw new ArgumentNullException(nameof(configuration)); Bus = bus ?? throw new ArgumentNullException(nameof(bus)); if (transportService == null) { throw new ArgumentNullException(nameof(transportService)); } BaseUri = configuration.BaseUri; _resourceRouter = InitResourceRouter(configuration, transportService); }
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); }
private async Task Init(CancellationToken cancellationToken = default(CancellationToken)) { _configuration = await IISConfigurationManager.LoadConfiguration(); _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); await _transportService.Init(cancellationToken); await _bus.Init(cancellationToken); _resourceRouter = new ResourceTypeDictionaryRouter { {"message", new MessageController(_bus.HandleMessage)}, {"topic", new TopicController(_subscriptionTrackingService, _configuration.Topics)} }; }
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); }
public PlatibusMiddleware(RequestDelegate next, IHttpResourceRouter resourceRouter, IDiagnosticService diagnosticService) { _next = next; _diagnosticService = diagnosticService ?? DiagnosticService.DefaultInstance; _resourceRouter = resourceRouter ?? throw new ArgumentNullException(nameof(resourceRouter)); }