/// <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); }
private static async Task <Bus> InitBus(IIISConfiguration cfg, HttpTransportService ts, IMessageQueueingService mqs) { var bus = new Bus(cfg, cfg.BaseUri, ts, mqs); await ts.Init(); await bus.Init(); return(bus); }
/// <summary> /// Initializes a new <see cref="T:Platibus.IIS.PlatibusHttpModule" /> with the specified configuration /// and any configuration hooks present in the app domain assemblies /// </summary> public PlatibusHttpModule(IIISConfiguration configuration) { _configuration = configuration ?? throw new ArgumentNullException(nameof(configuration)); var managedBus = BusManager.SingletonInstance.GetManagedBus(_configuration); _bus = managedBus.Bus; _transportService = managedBus.TransportService; }
/// <inheritdoc /> public IBus GetBus(IIISConfiguration configuration) { if (configuration == null) { throw new ArgumentNullException(nameof(configuration)); } var managedBus = GetManagedBus(configuration); return(managedBus.Bus); }
/// <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 static IHttpResourceRouter InitResourceRouter(IIISConfiguration configuration, HttpTransportService transportService) { var authorizationService = configuration.AuthorizationService; var subscriptionTrackingService = configuration.SubscriptionTrackingService; return(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(SingletonMetricsCollector) } }); }
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)} }; }
internal void DisposeManagedBus(IIISConfiguration configuration) { if (configuration == null) { throw new ArgumentNullException(nameof(configuration)); } var uri = configuration.BaseUri; ManagedBus bus; lock (_syncRoot) { if (_busInstances.TryGetValue(uri, out bus)) { _busInstances.Remove(configuration.BaseUri); } } bus?.Dispose(); }
internal ManagedBus GetManagedBus(IIISConfiguration configuration) { if (configuration == null) { throw new ArgumentNullException(nameof(configuration)); } var uri = configuration.BaseUri; ManagedBus managedBus; lock (_syncRoot) { if (_busInstances.TryGetValue(uri, out managedBus)) { return(managedBus); } managedBus = new ManagedBus(configuration); _busInstances[configuration.BaseUri] = managedBus; } return(managedBus); }
/// <summary> /// Initializes a new <see cref="ManagedBus"/> with the specified <paramref name="configuration"/> /// </summary> /// <param name="configuration">The configuration used to initialize the bus instance /// and its related components</param> public ManagedBus(IIISConfiguration configuration) { if (configuration == null) { throw new ArgumentNullException(nameof(configuration)); } var baseUri = configuration.BaseUri; _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 = InitBus(configuration, TransportService, _messageQueueingService).GetResultFromCompletionSource(); }