public ConnectionFactory(string hubName, IServiceEndpointProvider provider, IServerNameProvider nameProvider, ILoggerFactory loggerFactory) { _provider = provider ?? throw new ArgumentNullException(nameof(provider)); _loggerFactory = loggerFactory == null ? (ILoggerFactory)NullLoggerFactory.Instance : new GracefulLoggerFactory(loggerFactory); _userId = nameProvider?.GetName(); _hubName = hubName; }
public MockServiceHubDispatcher( IServiceProtocol serviceProtocol, IHubContext <THub> context, IServiceConnectionManager <THub> serviceConnectionManager, IClientConnectionManager clientConnectionManager, IServiceEndpointManager serviceEndpointManager, IOptions <ServiceOptions> options, ILoggerFactory loggerFactory, IEndpointRouter router, IServerNameProvider nameProvider, ServerLifetimeManager serverLifetimeManager, IClientConnectionFactory clientConnectionFactory) : base( serviceProtocol, context, serviceConnectionManager, clientConnectionManager, serviceEndpointManager, options, loggerFactory, router, nameProvider, serverLifetimeManager, clientConnectionFactory, null) { MockService = new ConnectionTrackingMockService(); // just store copies of these locally to keep the base class' accessor modifiers intact _loggerFactory = loggerFactory; _clientConnectionManager = clientConnectionManager; _serviceProtocol = serviceProtocol; _clientConnectionFactory = clientConnectionFactory; }
public ServiceEndpointManager(IServerNameProvider provider, ServiceOptions options, ILoggerFactory loggerFactory) : base(options, loggerFactory?.CreateLogger <ServiceEndpointManager>()) { _provider = provider; _options = options; }
public NegotiateHandler( IOptions <HubOptions> globalHubOptions, IOptions <HubOptions <THub> > hubOptions, IServiceEndpointManager endpointManager, IEndpointRouter router, IUserIdProvider userIdProvider, IServerNameProvider nameProvider, IConnectionRequestIdProvider connectionRequestIdProvider, IOptions <ServiceOptions> options, IBlazorDetector blazorDetector, ILogger <NegotiateHandler <THub> > logger) { _logger = logger ?? throw new ArgumentNullException(nameof(logger)); _endpointManager = endpointManager ?? throw new ArgumentNullException(nameof(endpointManager)); _router = router ?? throw new ArgumentNullException(nameof(router)); _serverName = nameProvider?.GetName(); _userIdProvider = userIdProvider ?? throw new ArgumentNullException(nameof(userIdProvider)); _connectionRequestIdProvider = connectionRequestIdProvider ?? throw new ArgumentNullException(nameof(connectionRequestIdProvider)); _claimsProvider = options?.Value?.ClaimsProvider; _diagnosticClientFilter = options?.Value?.DiagnosticClientFilter; _blazorDetector = blazorDetector ?? new DefaultBlazorDetector(); _mode = options.Value.ServerStickyMode; _enableDetailedErrors = globalHubOptions.Value.EnableDetailedErrors == true; _endpointsCount = options.Value.Endpoints.Length; _maxPollInterval = options.Value.MaxPollIntervalInSeconds; _transportTypeDetector = options.Value.TransportTypeDetector; _customHandshakeTimeout = GetCustomHandshakeTimeout(hubOptions.Value.HandshakeTimeout ?? globalHubOptions.Value.HandshakeTimeout); _hubName = typeof(THub).Name; }
private async Task UpdateAccessKeyAsyncCore(IServerNameProvider provider, ILoggerFactory loggerFactory) { _timer.Start(); var logger = loggerFactory.CreateLogger <AadAccessKey>(); while (await _timer) { int i; for (i = 0; i < AuthorizeMaxRetryTimes; i++) { var source = new CancellationTokenSource(AuthorizeTimeout); try { await AuthorizeAsync(provider.GetName(), source.Token); Log.SucceedAuthorizeAccessKey(logger, Endpoint); _isAuthorized = true; break; } catch (Exception e) { Log.FailedAuthorizeAccessKey(logger, Endpoint, e); await Task.Delay(AuthorizeRetryInterval); } } if (i == AuthorizeMaxRetryTimes) { _isAuthorized = false; Log.ErrorAuthorizeAccessKey(logger, Endpoint); } _initializedTcs.TrySetResult(null); } }
public ServiceHubDispatcher( IServiceProtocol serviceProtocol, IHubContext <THub> context, IServiceConnectionManager <THub> serviceConnectionManager, IClientConnectionManager clientConnectionManager, IServiceEndpointManager serviceEndpointManager, IOptions <ServiceOptions> options, ILoggerFactory loggerFactory, IEndpointRouter router, IServerNameProvider nameProvider, ServerLifetimeManager serverLifetimeManager, IClientConnectionFactory clientConnectionFactory, IServiceEventHandler serviceEventHandler) { _serviceProtocol = serviceProtocol; _serviceConnectionManager = serviceConnectionManager; _clientConnectionManager = clientConnectionManager; _serviceEndpointManager = serviceEndpointManager; _options = options != null ? options.Value : throw new ArgumentNullException(nameof(options)); Context = context; _router = router ?? throw new ArgumentNullException(nameof(router)); _loggerFactory = loggerFactory ?? throw new ArgumentNullException(nameof(loggerFactory)); _logger = loggerFactory.CreateLogger <ServiceHubDispatcher <THub> >(); _clientConnectionFactory = clientConnectionFactory; _nameProvider = nameProvider; _hubName = typeof(THub).Name; _serviceEventHandler = serviceEventHandler; serverLifetimeManager?.Register(ShutdownAsync); }
internal ServiceManager(ServiceManagerOptions serviceManagerOptions) { _serviceManagerOptions = serviceManagerOptions; _endpoint = new ServiceEndpoint(_serviceManagerOptions.ConnectionString, EndpointType.Secondary); _endpointProvider = new ServiceEndpointProvider(_endpoint, appName: _serviceManagerOptions.ApplicationName); _serverNameProvider = new DefaultServerNameProvider(); }
public Task UpdateAccessKeyAsync(IServerNameProvider provider, ILoggerFactory loggerFactory) { if (Interlocked.CompareExchange(ref initialized, 1, 0) == 0) { Task.Run(() => UpdateAccessKeyAsyncCore(provider, loggerFactory)); } return(Task.CompletedTask); }
internal ServiceManager(ServiceManagerOptions serviceManagerOptions, string productInfo) { _serviceManagerOptions = serviceManagerOptions; _endpoint = new ServiceEndpoint(_serviceManagerOptions.ConnectionString, EndpointType.Secondary); _endpointProvider = new ServiceEndpointProvider(_endpoint, Options.Create(new ServiceOptions { ApplicationName = _serviceManagerOptions.ApplicationName })); _serverNameProvider = new DefaultServerNameProvider(); _productInfo = productInfo; }
public ServiceConnectionFactory( IServiceProtocol serviceProtocol, IClientConnectionManager clientConnectionManager, IConnectionFactory connectionFactory, ILoggerFactory logger, IServerNameProvider nameProvider ) { _serviceProtocol = serviceProtocol; _clientConnectionManager = clientConnectionManager; _connectionFactory = connectionFactory; _logger = logger; _nameProvider = nameProvider; }
internal ServiceManager(ServiceManagerOptions serviceManagerOptions, string productInfo) { _serviceManagerOptions = serviceManagerOptions; _endpoint = new ServiceEndpoint(_serviceManagerOptions.ConnectionString, EndpointType.Secondary); _endpointProvider = new ServiceEndpointProvider(_endpoint, Options.Create(new ServiceOptions { ApplicationName = _serviceManagerOptions.ApplicationName, Proxy = serviceManagerOptions.Proxy }).Value); _serverNameProvider = new DefaultServerNameProvider(); _productInfo = productInfo; _restClient = new RestClient(); _restApiProvider = new RestApiProvider(_serviceManagerOptions.ConnectionString); }
/// <summary> /// For test only. /// </summary> internal AccessKeySynchronizer( IServerNameProvider serverNameProvider, ILoggerFactory loggerFactory, bool start ) { if (start) { _ = UpdateAsync(); } _provider = serverNameProvider ?? throw new ArgumentNullException(nameof(serverNameProvider)); _factory = loggerFactory ?? throw new ArgumentNullException(nameof(loggerFactory)); }
public MultiEndpointServiceConnectionContainerFactory( IServiceConnectionFactory serviceConnectionFactory, IServiceEndpointManager serviceEndpointManager, IEndpointRouter router, IOptions <ServiceOptions> options, IServerNameProvider nameProvider, ILoggerFactory loggerFactory) { _loggerFactory = loggerFactory; _router = router ?? throw new ArgumentNullException(nameof(router)); _serviceConnectionFactory = serviceConnectionFactory; _nameProvider = nameProvider; _options = options?.Value; _serviceEndpointManager = serviceEndpointManager ?? throw new ArgumentNullException(nameof(serviceEndpointManager)); }
public ServiceEndpointProvider(IServerNameProvider provider, ServiceEndpoint endpoint, ServiceOptions options) { _accessTokenLifetime = options.AccessTokenLifetime; // Version is ignored for aspnet signalr case _endpoint = endpoint.Endpoint; _accessKey = endpoint.AccessKey; _appName = options.ApplicationName; _port = endpoint.Port; _algorithm = options.AccessTokenAlgorithm; _provider = provider; Proxy = options.Proxy; }
public ServiceConnectionContainerFactory( IServiceConnectionFactory serviceConnectionFactory, IServiceEndpointManager serviceEndpointManager, IMessageRouter router, IServiceEndpointOptions options, IServerNameProvider nameProvider, ILoggerFactory loggerFactory) { _serviceConnectionFactory = serviceConnectionFactory; _serviceEndpointManager = serviceEndpointManager ?? throw new ArgumentNullException(nameof(serviceEndpointManager)); _router = router ?? throw new ArgumentNullException(nameof(router)); _options = options; _nameProvider = nameProvider; _loggerFactory = loggerFactory; }
public ServiceEndpointManager( IServerNameProvider provider, IOptionsMonitor <ServiceOptions> optionsMonitor, ILoggerFactory loggerFactory ) : base(optionsMonitor.CurrentValue, loggerFactory.CreateLogger <ServiceEndpointManager>()) { _options = optionsMonitor.CurrentValue; _logger = loggerFactory?.CreateLogger <ServiceEndpointManager>() ?? throw new ArgumentNullException(nameof(loggerFactory)); _loggerFactory = loggerFactory; optionsMonitor.OnChange(OnChange); _scaleTimeout = _options.ServiceScaleTimeout; _provider = provider; }
public MultiEndpointServiceConnectionContainer( IServiceConnectionFactory serviceConnectionFactory, string hub, int count, IServiceEndpointManager endpointManager, IMessageRouter router, IServerNameProvider nameProvider, ILoggerFactory loggerFactory ) : this( hub, endpoint => CreateContainer(serviceConnectionFactory, endpoint, count, loggerFactory), endpointManager, router, loggerFactory ) { }
internal ServiceManager(ServiceManagerContext context, RestClientFactory restClientFactory) { _endpoint = context.ServiceEndpoints.Single();//temp solution _serverNameProvider = new DefaultServerNameProvider(); var serviceOptions = Options.Create(new ServiceOptions { ApplicationName = context.ApplicationName, Proxy = context.Proxy }).Value; _endpointProvider = new ServiceEndpointProvider(_serverNameProvider, _endpoint, serviceOptions); _productInfo = context.ProductInfo; _context = context; _restClientFactory = restClientFactory; }
public ServiceEndpointProvider( IServerNameProvider provider, ServiceEndpoint endpoint, ServiceOptions serviceOptions, ILoggerFactory loggerFactory = null ) { _accessTokenLifetime = serviceOptions.AccessTokenLifetime; _accessKey = endpoint.AccessKey; _appName = serviceOptions.ApplicationName; _algorithm = serviceOptions.AccessTokenAlgorithm; Proxy = serviceOptions.Proxy; _generator = new DefaultServiceEndpointGenerator(endpoint); _ = UpdateAccessKeyAsync(provider, endpoint, loggerFactory ?? NullLoggerFactory.Instance); }
public ServiceConnectionFactory( IServiceProtocol serviceProtocol, IClientConnectionManager clientConnectionManager, IConnectionFactory connectionFactory, ILoggerFactory loggerFactory, ConnectionDelegate connectionDelegate, IClientConnectionFactory clientConnectionFactory, IServerNameProvider nameProvider, IServiceEventHandler serviceEventHandler) { _serviceProtocol = serviceProtocol; _clientConnectionManager = clientConnectionManager; _connectionFactory = connectionFactory; _loggerFactory = loggerFactory; _connectionDelegate = connectionDelegate; _clientConnectionFactory = clientConnectionFactory; _nameProvider = nameProvider; _serviceEventHandler = serviceEventHandler; }
public MockServiceConnectionFactory( IMockService mockService, IServiceProtocol serviceProtocol, IClientConnectionManager clientConnectionManager, IConnectionFactory connectionFactory, ILoggerFactory loggerFactory, ConnectionDelegate connectionDelegate, IClientConnectionFactory clientConnectionFactory, IServerNameProvider nameProvider) : base( serviceProtocol, clientConnectionManager, new MockServiceConnectionContextFactory(mockService), // use instead of connectionFactory loggerFactory, connectionDelegate, clientConnectionFactory, nameProvider) { _mockService = mockService; }
public ServiceEndpointProvider( IServerNameProvider provider, ServiceEndpoint endpoint, ServiceOptions serviceOptions, ILoggerFactory loggerFactory) { _accessTokenLifetime = serviceOptions.AccessTokenLifetime; _accessKey = endpoint.AccessKey; _appName = serviceOptions.ApplicationName; _algorithm = serviceOptions.AccessTokenAlgorithm; Proxy = serviceOptions.Proxy; _generator = new DefaultServiceEndpointGenerator(endpoint); if (endpoint.AccessKey is AadAccessKey key) { _ = key.UpdateAccessKeyAsync(provider, loggerFactory ?? throw new ArgumentNullException(nameof(loggerFactory))); } }
public ServiceHubDispatcher(IReadOnlyList <string> hubNames, IServiceProtocol protocol, IServiceConnectionManager serviceConnectionManager, IClientConnectionManager clientConnectionManager, IServiceEndpointManager serviceEndpointManager, IEndpointRouter router, IOptions <ServiceOptions> options, IServerNameProvider nameProvider, ILoggerFactory loggerFactory) { _hubNames = hubNames; _name = $"{nameof(ServiceHubDispatcher)}[{string.Join(",", hubNames)}]"; _loggerFactory = loggerFactory; _protocol = protocol ?? throw new ArgumentNullException(nameof(protocol)); _router = router ?? throw new ArgumentNullException(nameof(router)); _serviceConnectionManager = serviceConnectionManager ?? throw new ArgumentNullException(nameof(serviceConnectionManager)); _clientConnectionManager = clientConnectionManager ?? throw new ArgumentNullException(nameof(clientConnectionManager)); _nameProvider = nameProvider; _options = options?.Value; _serviceEndpointManager = serviceEndpointManager ?? throw new ArgumentNullException(nameof(serviceEndpointManager)); _logger = _loggerFactory.CreateLogger <ServiceHubDispatcher>(); }
public async Task UpdateAccessKeyAsync(IServerNameProvider provider, ServiceEndpoint endpoint, ILoggerFactory loggerFactory) { if (endpoint.AccessKey is AadAccessKey key) { _timer.Start(); } else { return; } var logger = loggerFactory.CreateLogger <ServiceEndpointProvider>(); while (await _timer) { var isAuthorized = false; for (int i = 0; i < AuthorizeMaxRetryTimes; i++) { logger.LogInformation($"Try authorizing AccessKey...({i})"); var source = new CancellationTokenSource(AuthorizeTimeout); try { await key.AuthorizeAsync(endpoint.Endpoint, endpoint.Port, provider.GetName(), source.Token); logger.LogInformation("AccessKey has been authorized successfully."); isAuthorized = true; break; } catch (Exception e) { logger.LogWarning(e, $"Failed to authorize AccessKey, will retry in {AuthorizeRetryIntervalInSec} seconds."); await Task.Delay(AuthorizeRetryInterval); } } if (!isAuthorized) { logger.LogError($"AccessKey authorized failed more than {AuthorizeMaxRetryTimes} times."); } } }
public NegotiateHandler( IOptions <HubOptions> hubOptions, IServiceEndpointManager endpointManager, IEndpointRouter router, IUserIdProvider userIdProvider, IServerNameProvider nameProvider, IConnectionRequestIdProvider connectionRequestIdProvider, IOptions <ServiceOptions> options, IBlazorDetector blazorDetector) { _endpointManager = endpointManager ?? throw new ArgumentNullException(nameof(endpointManager)); _router = router ?? throw new ArgumentNullException(nameof(router)); _serverName = nameProvider?.GetName(); _userIdProvider = userIdProvider ?? throw new ArgumentNullException(nameof(userIdProvider)); _connectionRequestIdProvider = connectionRequestIdProvider ?? throw new ArgumentNullException(nameof(connectionRequestIdProvider)); _claimsProvider = options?.Value?.ClaimsProvider; _diagnosticClientFilter = options?.Value?.DiagnosticClientFilter; _blazorDetector = blazorDetector ?? new DefaultBlazorDetector(); _mode = options.Value.ServerStickyMode; _enableDetailedErrors = hubOptions.Value.EnableDetailedErrors == true; _endpointsCount = options.Value.Endpoints.Length; _maxPollInterval = options.Value.MaxPollIntervalInSeconds; }
public ServiceHubDispatcher(IServiceProtocol serviceProtocol, IServiceConnectionManager <THub> serviceConnectionManager, IClientConnectionManager clientConnectionManager, IServiceEndpointManager serviceEndpointManager, IOptions <ServiceOptions> options, ILoggerFactory loggerFactory, IEndpointRouter router, IServerNameProvider nameProvider, IClientConnectionFactory clientConnectionFactory) { _serviceProtocol = serviceProtocol; _serviceConnectionManager = serviceConnectionManager; _clientConnectionManager = clientConnectionManager; _serviceEndpointManager = serviceEndpointManager; _options = options != null ? options.Value : throw new ArgumentNullException(nameof(options)); _router = router ?? throw new ArgumentNullException(nameof(router)); _loggerFactory = loggerFactory ?? throw new ArgumentNullException(nameof(loggerFactory)); _logger = loggerFactory.CreateLogger <ServiceHubDispatcher <THub> >(); _clientConnectionFactory = clientConnectionFactory; _nameProvider = nameProvider; _hubName = typeof(THub).Name; }
public ServiceEndpointProvider( IServerNameProvider provider, ServiceEndpoint endpoint, ServiceOptions options, ILoggerFactory loggerFactory) { _accessTokenLifetime = options.AccessTokenLifetime; // Version is ignored for aspnet signalr case _endpoint = endpoint.Endpoint; _clientEndpoint = endpoint.ClientEndpoint ?? endpoint.Endpoint; _accessKey = endpoint.AccessKey; _appName = options.ApplicationName; _port = endpoint.Port; _algorithm = options.AccessTokenAlgorithm; _provider = provider; Proxy = options.Proxy; if (endpoint.AccessKey is AadAccessKey key) { _ = key.UpdateAccessKeyAsync(provider, loggerFactory ?? throw new ArgumentNullException(nameof(loggerFactory))); } }
public NegotiateMiddleware(OwinMiddleware next, HubConfiguration configuration, string appName, IServiceEndpointManager endpointManager, IEndpointRouter router, ServiceOptions options, IServerNameProvider serverNameProvider, IConnectionRequestIdProvider connectionRequestIdProvider, ILoggerFactory loggerFactory) : base(next) { _configuration = configuration; _provider = configuration.Resolver.Resolve <IUserIdProvider>(); _appName = appName ?? throw new ArgumentNullException(nameof(appName)); _claimsProvider = options?.ClaimsProvider; _endpointManager = endpointManager ?? throw new ArgumentNullException(nameof(endpointManager)); _router = router ?? throw new ArgumentNullException(nameof(router)); _connectionRequestIdProvider = connectionRequestIdProvider ?? throw new ArgumentNullException(nameof(connectionRequestIdProvider)); _logger = loggerFactory?.CreateLogger <NegotiateMiddleware>() ?? throw new ArgumentNullException(nameof(loggerFactory)); _serverName = serverNameProvider?.GetName(); _mode = options.ServerStickyMode; _enableDetailedErrors = configuration.EnableDetailedErrors; _endpointsCount = options.Endpoints.Length; _maxPollInterval = options.MaxPollIntervalInSeconds; }
public NegotiateMiddleware(OwinMiddleware next, HubConfiguration configuration, string appName, IServiceEndpointManager endpointManager, IEndpointRouter router, ServiceOptions options, IServerNameProvider serverNameProvider, ILoggerFactory loggerFactory) : base(next) { _configuration = configuration; _provider = configuration.Resolver.Resolve <IUserIdProvider>(); _appName = appName ?? throw new ArgumentNullException(nameof(appName)); _claimsProvider = options?.ClaimsProvider; _endpointManager = endpointManager ?? throw new ArgumentNullException(nameof(endpointManager)); _router = router ?? throw new ArgumentNullException(nameof(router)); _logger = loggerFactory?.CreateLogger <NegotiateMiddleware>() ?? throw new ArgumentNullException(nameof(loggerFactory)); _serverName = serverNameProvider?.GetName(); _mode = options.ServerStickyMode; }
public NegotiateHandler( IOptions <HubOptions> hubOptions, IServiceEndpointManager endpointManager, IEndpointRouter router, IUserIdProvider userIdProvider, IServerNameProvider nameProvider, IConnectionRequestIdProvider connectionRequestIdProvider, IOptions <ServiceOptions> options) { _endpointManager = endpointManager ?? throw new ArgumentNullException(nameof(endpointManager)); _router = router ?? throw new ArgumentNullException(nameof(router)); _serverName = nameProvider?.GetName(); _userIdProvider = userIdProvider ?? throw new ArgumentNullException(nameof(userIdProvider)); _connectionRequestIdProvider = connectionRequestIdProvider ?? throw new ArgumentNullException(nameof(connectionRequestIdProvider)); _claimsProvider = options?.Value?.ClaimsProvider; _mode = options.Value.ServerStickyMode; _enableDetailedErrors = hubOptions.Value.EnableDetailedErrors == true; _endpointsCount = options.Value.Endpoints.Length; }