public void Initialize(IServiceConnectionContainerFactory connectionFactory) { if (connectionFactory == null) { throw new ArgumentNullException(nameof(connectionFactory)); } if (_hubConnections != null) { // TODO: log something to indicate the connection is already initialized. return; } lock (_lock) { if (_hubConnections != null) { return; } var connections = new Dictionary <string, IServiceConnectionContainer>(); _appConnection = connectionFactory.Create(_appName); foreach (var hub in _hubs) { var connection = connectionFactory.Create(hub); connections.Add(hub, connection); } _hubConnections = connections; } }
public ServiceHubDispatcher(IReadOnlyList <string> hubNames, IServiceConnectionManager serviceConnectionManager, IServiceConnectionContainerFactory serviceConnectionContainerFactory, IOptions <ServiceOptions> options, ILoggerFactory loggerFactory) { _hubNames = hubNames; _name = $"{nameof(ServiceHubDispatcher)}[{string.Join(",", hubNames)}]"; _loggerFactory = loggerFactory; _serviceConnectionManager = serviceConnectionManager ?? throw new ArgumentNullException(nameof(serviceConnectionManager)); _serviceConnectionContainerFactory = serviceConnectionContainerFactory; _options = options?.Value; _logger = _loggerFactory.CreateLogger <ServiceHubDispatcher>(); }