Beispiel #1
0
        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));
            }
        }
Beispiel #2
0
 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;
 }
Beispiel #3
0
 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
         )
 {
 }