internal static IDriver CreateDriver(Uri uri, Config config, IPooledConnectionFactory connectionFactory) { var logger = config.Logger; var parsedUri = uri.ParseBoltUri(DefaultBoltPort); var routingContext = uri.ParseRoutingContext(DefaultBoltPort); var routingSettings = new RoutingSettings(parsedUri, routingContext, config); var metrics = config.MetricsEnabled ? new DefaultMetrics() : null; var connectionPoolSettings = new ConnectionPoolSettings(config, metrics); var retryLogic = new AsyncRetryLogic(config.MaxTransactionRetryTime, logger); EnsureNoRoutingContextOnBolt(uri, routingContext); IConnectionProvider connectionProvider = null; if (parsedUri.IsRoutingUri()) { connectionProvider = new LoadBalancer(connectionFactory, routingSettings, connectionPoolSettings, logger); } else { connectionProvider = new ConnectionPool(parsedUri, connectionFactory, connectionPoolSettings, logger, null); } return(new Internal.Driver(parsedUri, connectionProvider, retryLogic, logger, metrics, config)); }
internal static IDriver CreateDriver(Uri uri, Config config, IPooledConnectionFactory connectionFactory) { var logger = config.DriverLogger; var parsedUri = uri.ParseBoltUri(DefaultBoltPort); var routingContext = uri.ParseRoutingContext(); var routingSettings = new RoutingSettings(parsedUri, routingContext, config); var metrics = config.MetricsFactory?.CreateMetrics(config); var connectionPoolSettings = new ConnectionPoolSettings(config, metrics); var retryLogic = new AsyncRetryLogic(config.MaxTransactionRetryTime, logger); IConnectionProvider connectionProvider = null; switch (parsedUri.Scheme.ToLower()) { case "bolt": EnsureNoRoutingContext(uri, routingContext); connectionProvider = new ConnectionPool(parsedUri, connectionFactory, connectionPoolSettings, logger); break; case "bolt+routing": connectionProvider = new LoadBalancer(connectionFactory, routingSettings, connectionPoolSettings, logger); break; default: throw new NotSupportedException($"Unsupported URI scheme: {parsedUri.Scheme}"); } return(new Internal.Driver(parsedUri, connectionProvider, retryLogic, logger, metrics, config)); }
public ClusterConnectionPool( IEnumerable <Uri> initUris, IPooledConnectionFactory connectionFactory, ConnectionPoolSettings poolSettings, ILogger logger ) : this(initUris, new ConnectionPoolFactory(connectionFactory, poolSettings, logger), logger) { }
public ConnectionPoolFactory(IPooledConnectionFactory connectionFactory, ConnectionPoolSettings poolSettings, ILogger logger) { Throw.ArgumentNullException.IfNull(connectionFactory, nameof(connectionFactory)); Throw.ArgumentNullException.IfNull(poolSettings, nameof(poolSettings)); _connectionFactory = connectionFactory; _poolSettings = poolSettings; _logger = logger; }
public ConnectionPoolFactory(IPooledConnectionFactory connectionFactory, ConnectionPoolSettings poolSettings, IDictionary <string, string> routingContext, ILogger logger) { Throw.ArgumentNullException.IfNull(connectionFactory, nameof(connectionFactory)); Throw.ArgumentNullException.IfNull(poolSettings, nameof(poolSettings)); _connectionFactory = connectionFactory; _poolSettings = poolSettings; _logger = logger; _routingContext = routingContext; }
public LoadBalancer( IPooledConnectionFactory connectionFactory, RoutingSettings routingSettings, ConnectionPoolSettings poolSettings, IDriverLogger logger) { _logger = logger; _clusterConnectionPool = new ClusterConnectionPool(Enumerable.Empty <Uri>(), connectionFactory, poolSettings, logger); _routingTableManager = new RoutingTableManager(routingSettings, this, logger); _loadBalancingStrategy = CreateLoadBalancingStrategy(routingSettings.Strategy, _clusterConnectionPool, _logger); }
public LoadBalancer( IPooledConnectionFactory connectionFactory, RoutingSettings routingSettings, ConnectionPoolSettings poolSettings, ILogger logger) { _logger = logger; var uris = routingSettings.InitialServers; _clusterConnectionPool = new ClusterConnectionPool(uris, connectionFactory, poolSettings, logger); _routingTableManager = new RoutingTableManager(routingSettings, this, logger); _loadBalancingStrategy = CreateLoadBalancingStrategy(routingSettings.Strategy, _clusterConnectionPool, logger); }
public LoadBalancer( IPooledConnectionFactory connectionFactory, RoutingSettings routingSettings, ConnectionPoolSettings poolSettings, ILogger logger) { _logger = logger; _clusterConnectionPool = new ClusterConnectionPool(Enumerable.Empty <Uri>(), connectionFactory, poolSettings, logger); _routingTableManager = new RoutingTableManager(routingSettings, this, logger); _loadBalancingStrategy = CreateLoadBalancingStrategy(_clusterConnectionPool, _logger); _initialServerAddressProvider = routingSettings.InitialServerAddressProvider; }
public MonitoredPooledConnectionFactory(IPooledConnectionFactory factory) { _delegate = factory; }