Exemplo n.º 1
0
        /// <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);
        }
Exemplo n.º 2
0
        /// <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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        /// <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;
        }
Exemplo n.º 5
0
        /// <inheritdoc />
        public IBus GetBus(IIISConfiguration configuration)
        {
            if (configuration == null)
            {
                throw new ArgumentNullException(nameof(configuration));
            }
            var managedBus = GetManagedBus(configuration);

            return(managedBus.Bus);
        }
Exemplo n.º 6
0
        /// <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);
        }
Exemplo n.º 7
0
        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) }
            });
        }
Exemplo n.º 8
0
 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)}
     };
 }
Exemplo n.º 9
0
        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();
        }
Exemplo n.º 10
0
        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);
        }
Exemplo n.º 11
0
        /// <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();
        }