public MultiEndpointServiceConnectionContainer(string hub, Func <HubServiceEndpoint, IServiceConnectionContainer> generator, IServiceEndpointManager endpointManager, IMessageRouter router, IClientConnectionLifetimeManager lifetime, ILoggerFactory loggerFactory) { if (generator == null) { throw new ArgumentNullException(nameof(generator)); } _clientLifetime = lifetime; _logger = loggerFactory?.CreateLogger <MultiEndpointServiceConnectionContainer>() ?? throw new ArgumentNullException(nameof(loggerFactory)); // provides a copy to the endpoint per container _endpoints = endpointManager.GetEndpoints(hub); if (_endpoints.Count == 1) { _inner = generator(_endpoints[0]); } else { // router is required when endpoints > 1 _router = router ?? throw new ArgumentNullException(nameof(router)); Connections = _endpoints.ToDictionary(s => (ServiceEndpoint)s, s => generator(s)); } }
public ServiceConnectionContainerFactory( IServiceConnectionFactory serviceConnectionFactory, IServiceEndpointManager serviceEndpointManager, IMessageRouter router, IServiceEndpointOptions options, IServerNameProvider nameProvider, IClientConnectionLifetimeManager lifetime, ILoggerFactory loggerFactory) { _serviceConnectionFactory = serviceConnectionFactory; _serviceEndpointManager = serviceEndpointManager ?? throw new ArgumentNullException(nameof(serviceEndpointManager)); _router = router ?? throw new ArgumentNullException(nameof(router)); _options = options; _nameProvider = nameProvider; _lifetime = lifetime; _loggerFactory = loggerFactory; }
public MultiEndpointServiceConnectionContainer( IServiceConnectionFactory serviceConnectionFactory, string hub, int count, IServiceEndpointManager endpointManager, IMessageRouter router, IServerNameProvider nameProvider, IClientConnectionLifetimeManager lifetime, ILoggerFactory loggerFactory ) : this( hub, endpoint => CreateContainer(serviceConnectionFactory, endpoint, count, loggerFactory), endpointManager, router, lifetime, loggerFactory ) { }