private void MapAssemblyOf <T, TInterface>(StandardConfigurer <IRouter> configurer, string queueName) { _typeBasedRouterConfigurationBuilder = _typeBasedRouterConfigurationBuilder ?? configurer.TypeBased(); foreach (Type type in typeof(T).Assembly.GetTypes().Where(t => typeof(TInterface).IsAssignableFrom(t))) { _typeBasedRouterConfigurationBuilder.Map(type, queueName); } }
public static TypeBasedRouterConfigurationExtensions.TypeBasedRouterConfigurationBuilder Map( this TypeBasedRouterConfigurationExtensions.TypeBasedRouterConfigurationBuilder builder, IEnumerable <Type> types, string destination) { foreach (var type in types) { builder.Map(type, destination); } return(builder); }
/// <summary> /// Map SignalR backplane commands to the destination address /// </summary> /// <param name="configurationBuilder"></param> /// <param name="destinationAddress"></param> /// <typeparam name="THub"></typeparam> /// <returns></returns> public static TypeBasedRouterConfigurationExtensions.TypeBasedRouterConfigurationBuilder MapSignalRCommands <THub>( this TypeBasedRouterConfigurationExtensions.TypeBasedRouterConfigurationBuilder configurationBuilder, string destinationAddress) where THub : Hub { configurationBuilder.Map <AddToGroup <THub> >(destinationAddress); configurationBuilder.Map <RemoveFromGroup <THub> >(destinationAddress); configurationBuilder.Map <All <THub> >(destinationAddress); configurationBuilder.Map <Connection <THub> >(destinationAddress); configurationBuilder.Map <Group <THub> >(destinationAddress); configurationBuilder.Map <User <THub> >(destinationAddress); return(configurationBuilder); }
public void Configure(TypeBasedRouterConfigurationExtensions.TypeBasedRouterConfigurationBuilder typeBasedRouterConfigurationBuilder) { if (_configuration.AssembliesWithMessages?.Any() != true) { throw new JarvisFrameworkEngineException("JarvisRebusConfiguration has no AssembliesWithMessages configured. This is not permitted because no assembly will be scanned for commands to create routing."); } foreach (var assembly in _configuration.AssembliesWithMessages) { var types = assembly.GetTypes(); var messageTypes = types .Where(t => typeof(IMessage).IsAssignableFrom(t) && !t.IsAbstract); foreach (var message in messageTypes) { var endpoint = _configuration.GetEndpointFor(message); if (!String.IsNullOrEmpty(endpoint)) { typeBasedRouterConfigurationBuilder.Map(message, endpoint); } } } }
public static TypeBasedRouterConfigurationExtensions.TypeBasedRouterConfigurationBuilder Map(this TypeBasedRouterConfigurationExtensions.TypeBasedRouterConfigurationBuilder builder, IDictionary <Type, string> map) { foreach (var entry in map) { builder.Map(entry.Key, entry.Value); } return(builder); }
/// <summary> /// Adds mappings /// </summary> public static TypeBasedRouterConfigurationExtensions.TypeBasedRouterConfigurationBuilder AddEndpointMappingsFromAppConfig(this TypeBasedRouterConfigurationExtensions.TypeBasedRouterConfigurationBuilder builder) { var rebusRoutingConfigurationSection = GetRebusRoutingConfigurationSection(); try { SetUpEndpointMappings(rebusRoutingConfigurationSection.MappingsCollection, (type, endpoint) => builder.Map(type, endpoint)); return(builder); } catch (Exception exception) { throw GetStandardConfigurationException(exception); } }
/// <summary> /// Adds mappings /// </summary> public static TypeBasedRouterConfigurationExtensions.TypeBasedRouterConfigurationBuilder AddMappingsFromConfiguration(this TypeBasedRouterConfigurationExtensions.TypeBasedRouterConfigurationBuilder builder, IConfiguration configuration, string path = null) { if (builder == null) { throw new ArgumentNullException(nameof(builder)); } if (configuration == null) { throw new ArgumentNullException(nameof(configuration)); } var mappings = new Dictionary <string, string>(); if (path == null) { configuration.Bind(mappings); } else { var section = configuration.GetSection(path) ?? throw new RebusConfigurationException( $"Could not find section with path '{path}' in the current configuration (which was very unexpected, because the configuration library should return an empty section and NOT null when looking for non-existent keys....)"); section.Bind(mappings); } SetUpEndpointMappings(mappings, (type, queue) => builder.Map(type, queue)); return(builder); }